1

使用 jquery 处理 Ajax 成功回调事件的正确方法是什么?

在我的代码中,当我运行而不是显示数据时,它会警告对象:对象。但是,如果我使用 saymsg.box它会正确返回数据。

我正在尝试创建一个if语句,if text equals a certain word然后将来自 json 的变量放置在结果 div BA_addbox 的 html 中。

我似乎无法让它发挥作用,如果有人能指出我的错误,我将不胜感激。我只包含了相关代码,因为表单正在发布正确的数据并且 php 代码正在捕获所有帖子。非常感谢。

ajax代码

$.ajax({
    type: "POST",
    url: "/domain/admin/requests/boxes/boxesadd.php",
    data: formdata,
    dataType: 'json',
    success: function(msg){
        if(msg == "You need to input a box") {
            $("#BA_addbox").html(msg.boxerrortext);
        }
        else {
            $("#BA_addbox").html(msg.box);
        }

        //alert(msg);
        console.log(msg);
        //$("#BA_addbox").html(msg.box);

        //$("#formImage .col_1 li").show();
        //$("#BA_boxform").get(0).reset();
        //$("#boxaddform").hide();
    }
});

boxadd.php

$box = mysql_real_escape_string($_POST['BA_box']);
$boxerrortext = "You need to input a box";

if (isset($_POST['submit']))    {
    if (!empty($box)) {

        $form = array('dept'=>$dept, 'company'=>$company, 'address'=>$address, 'service'=>$service, 'box'=>$box, 'destroydate'=>$destroydate, 'authorised'=>$authorised, 'submit'=>$submit);

        $result = json_encode($form);

        echo $result;

    }
    else
    {

        $error = array('boxerrortext'=>$boxerrortext);

        $output = json_encode($error);

        echo $output;
        //echo "You need to input a box";

    }
}
4

2 回答 2

4

在 javascript 中,关联数组被称为对象,因此传输的数据没有错误。

你为什么要msg比较"You need to input a box"?你不能比较对象和字符串,这是没有意义的。

if(typeof msg.boxerrortext !== "undefined" && msg.boxerrortext == "You need to input a box") {
    $("#BA_addbox").html(msg.boxerrortext);
} else {
    $("#BA_addbox").html(msg.box);
}
于 2013-06-26T17:06:55.780 回答
1

试试这个:

if(msg.boxerrortext) {
  $("#BA_addbox").html(msg.boxerrortext);
}
else {
  $("#BA_addbox").html(msg.box);
}

希望这会有所帮助!

于 2013-06-26T17:06:54.957 回答