2013-06-26 217 views
1

使用jquery處理Ajax成功回調事件的正確方法是什麼?Ajax返回對象而不是數據

在我的代碼中,當我運行而不是顯示數據時,它警告object:object。但是,如果我使用msg.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(); 
    } 
}); 

boxesadd.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"; 

    } 
} 
+1

您的JSON格式味精,你不能比較對象的字符串。 – ccd580ac6753941c6f84fe2e19f229

+0

對象是你的數據。 –

回答

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); 
} 
+0

謝謝您的支持。我將閱讀關聯數組。 – user1532468

1

試試這個:

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

希望這將幫助!

+0

'msg.boxerrortext'並不總是存在,您需要對此進行解釋 –

相關問題