2014-10-27 3 views
0

У меня есть мой первый вызов AJAX с настройкой jQuery и хорошо работающий. Последнее изменение, которое мне нужно сделать, - проверить результат на странице PHP, который вызывается для любых ошибок базы данных, и при необходимости отображать ошибку.jQuery AJAX - ответвление на результат

Вот мой текущий Javascript:

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#storeManager").change(function(){ 
      var storeManager = $("#storeManager").val(); 
      $.post('editProject.php', { type: 'storeManager', storeManager: storeManager, id: '1E1DDA14-D2C6-4FC8-BA5F-DBCCC7ABAF7F' }, function(data) { 

       if (data.error) { 
        $("#storeManagerRow").addClass("danger"); 
        $("#ajaxAlert").addClass("alert alert-danger"); 
        $("#ajaxAlert").addClass("danger").html(data.text); 
       } else { 
        $("#storeManagerRow").addClass("success"); 
        $("#storeManagerRow").removeClass("danger"); 
        $("#ajaxAlert").addClass("alert alert-success").html(data.text); 
       } 

      }).fail(function (xhr) { 
       // no data available in this context 
       $("#storeManagerRow").addClass("danger"); 
       $("#ajaxAlert").addClass("alert alert-danger"); 
       //display AJAX error details 
       $("#ajaxAlert").html(xhr.responseText); 
      }); 
     });  
    }); 
</script> 

Я страницу editProject.php эхо оттуда JSon закодированные массив вроде следующего:

{"error":"true","text":"Error: No Project ID Found (Missing Parameter)"} 

на наличие ошибок и следующих за успешный результат:

{"error":"false","text":"Database Updated Successfully"} 

В настоящий момент это не ветвление для ветви if (data.error) i t всегда разветвляется на другое, и он не отображает текстовое значение. Если я изменю:

$("#ajaxAlert").addClass("alert alert-success").html(data.text); 

к:

$("#ajaxAlert").addClass("alert alert-success").html(data); 

это вставить следующий текст в ajaxAlert DIV:

{"error":"true","text":"Error: Edit Record Error Unknown error (8003)"} 

Я новичок в JQuery и AJAX и рабочие вещи, как Я иду - я чувствую, что я очень близко, но не могу понять, почему он не ветвится для ошибки и почему он не отображает текстовое значение для ошибки или успешного результата из скрипта editProject.php?

ответ

0

Попробуйте следующие 2 вещи,

  1. Разбираем ответ JSON, data = JSON.parse(data);

  2. Заменить if (data.error), если (data.error == "true")

0

Свойство data.error содержит непустую непустую строку, которая всегда будет оцениваться как истина.

Вместо этого используйте:

if (data.error === 'true') { 
    // ... 
} 

В качестве альтернативы, изменить JSON содержит логическое значение литерала вместо строки:

{"error":true,"text":"Error: No Project ID Found (Missing Parameter)"} 
0

Ваш JSON имеет строковый литерал "error": "false" (который является truthy значение) вместо логического литерала "error": false (что было бы ложным).

1

проблема значение data.error ... это должно быть логическое значение ... не строка

так вместо назначения 'true' в PHP присвоить логическое значение true

Смежные вопросы