Jquery响应来自于post请求

3

我有一个问题...我有一个在PHP中的监听脚本,它执行以下操作:

  if ($count != 1) {echo 'no';} else { echo "yes";}

因此,它会根据任务是否成功回显“是”或“否”,而在我的页面上,我有以下内容:
   jConfirm('Are you sure you want to delete this publisher?', 'Delete publisher', function (r) {
    if (r) $.post('includes/publishers/delete-publisher.php?publisherid=' + publisherid, 
    function(data) {
            if (data == 'no') {
            $.jGrowl('Error - PUBLISHER WAS ALREDY DELETED !');
            alert("Data Loaded: " + data);
            } else {
            $(element).parents('tr').remove();
            $.jGrowl('Publisher deleted');       
            alert("Data Loaded: " + data);
            }
        });
});

问题在于,尽管 delete-publisher.php 回显“no”(我在提示框中看到了回显),但 JQuery 总是将其处理为响应为“yes”!?我是否遗漏了一些明显的东西?


1
也许您的响应中包含一些空格。尝试使用 alert("'"+ data +"'"); 或者使用 if ($.trim(data) == 'no') - Travesty3
你确定它是精确的“no”,而不是带有一些空格或其他东西的“no”吗? - Explosion Pills
2个回答

2

避免许多麻烦,使用 JSON 将响应发送回 JavaScript。可以采用以下方式(未经测试):

PHP 方面:

header('Content-type: application/json');
if ($count != 1) {
    echo json_encode(array('success'=>false));
} else { 
    echo json_encode(array('success'=>true))
}

JS侧:

jConfirm('Are you sure you want to delete this publisher?', 'Delete publisher', function (r) {
if (r) $.post('includes/publishers/delete-publisher.php?publisherid=' + publisherid, 
function(data) {
        if (data.success == false) {
            $.jGrowl('Error - PUBLISHER WAS ALREDY DELETED !');
            alert("Data Loaded: " + data);
        } else {
            $(element).parents('tr').remove();
            $.jGrowl('Publisher deleted');       
            alert("Data Loaded: " + data);
        }
    }, 'json');

});

这样,您就可以将错误消息传递回JS。

您还应该习惯使用类似于Firefox的Firebug之类的工具,以便您可以查看网络流量、发布参数、响应头等详细信息,并设置JS断点来帮助调试。


1

你的响应中可能有一些空格。尝试使用这个:

if ($.trim(data) == 'no') {

1
那是一个黑客技巧,他应该清楚其中的细节。 - fonZ
1
如果你想的话可以称之为“hack”,但它会使应用程序更加健壮。我并没有看到问题。即使是像在 ?> 结束标记后多出一些空格这样简单的问题也会导致麻烦。这个解决方案仍然适用于这种情况。 - Travesty3
是的,正确的,它是带有换行符的回复,是和否都有换行符...不确定为什么,但无论如何 - 这个修复了!谢谢!!! - Peter
这只是一个有两种解决方案(YES和NO)的简单脚本,所以我不认为有什么问题。那么什么是“正确的解决方案”呢? - Peter
是的,在打开的 <?php 和关闭的 ?> 标签之间有空行... :( 感谢大家关于 JSON 的好建议 - 对于更复杂的东西应该使用它,但这就像是一个是非题 :) 大家辛苦了! - Peter
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接