2013-06-26 4 views
1

Каков правильный способ обработки событий обратного вызова Ajax с использованием jquery?Ajax возвращающий объект вместо данных

В моем коде, когда я запускаю вместо отображения данных, он вызывает объект object: object. Однако, если я использую say msg.box, он вернет данные правильно.

Я пытаюсь создать оператор if, где if text equals a certain word, тогда переменная из json помещается в html результата div BA_addbox.

Возможно, я не могу заставить это работать и был бы признателен, если бы кто-нибудь мог указать на мою ошибку. Я включил только соответствующий код, так как форма отправляет правильные данные, а 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

ваш msg в формате 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' не всегда будет exsist, вам нужно учесть это –