0

我不确定为什么 if/else 语句在比较对成功的响应时不成立。第一个警报,提醒“成功”,但是当我尝试比较它时......它发现它不是真的。我究竟做错了什么?提前致谢。

    $("#suggestion_button_box").click(function(){     
    var suggestion = $("#suggest_input_id").serialize();

    if(suggestion != "") {
        $.post('suggest_tag.php',suggestion, function(response) {

            alert(response);    

            if(response == "success") {
                alert('yes');       
            }else {
                alert('no');
            }

    });

    }
});

PHP部分

echo "success";
4

3 回答 3

1

正如我上面提到的 - jQuery 可能会将结果字符串解释为不仅仅是纯文本。默认情况下,jQuery.post()尝试智能地猜测返回的数据类型。API 提供了 4 个参数选项,尝试将第四个参数 (dataType) 设置为 'text' 并查看它是否开始表现。

编辑

我注意到您在上面的评论,这改变了一些事情,所以“数据”现在可能是一个 XML/HTML 元素。

您必须查看返回的对象是否是 XML 元素,如果是,您可以进行 DOM 遍历,并可能通过 $(response).text() 进行检索。

编辑 2 您是返回响应 <code>"success"</code> 还是试图表明它是 <?php echo "success";?>?

于 2013-01-27T11:21:19.007 回答
0

根据我的经验,您的一个 PHP 脚本中可能有一些白色字符(即之前

如果这不能解决您的问题,您可以随时使用 JS trim() 函数,如下所示:

if(response.trim() == "success") {

甚至是跨浏览器的 jQuery.trim()。

于 2014-01-30T09:21:23.263 回答
0

尝试这个:

$("#suggestion_button_box").click(function(){
    var suggestion = $("#suggest_input_id").val();
    if(suggestion != "")
    {
        $.post('suggest_tag.php', { suggestion : suggestion },
        function(response) {
            alert(response);    
            if(response == "success") {
                alert('yes');       
            }else {
                alert('no');
            }
        });
    }
});
于 2014-01-30T09:36:54.693 回答