Jquery работает с буквальным значением, но не мой PHP вернул данные JSON из $ .post - PullRequest
1 голос
/ 02 марта 2011

Я использую jQuery $ .post для получения значений из запроса и (пытаюсь) заполнить форму этими значениями. Плагин populate нуждается в объекте JSON. Чтобы проверить мой успешный обратный вызов, я предупреждаю и отображаю данные - которые мне кажутся действительными JSON, но плагин не загружает поле формы. Однако, если я подставлю буквальное значение, например, {"cust_id": "65"}, это работает. В чем проблема? Благодарю.

..... вот клиентская сторона:

 <script type="text/javascript">

    $(".button").click(function () {        

      var suite = $("input#suite_no").val();

      $.post("get_custrec.php",
        { suite_no: suite },
        function(data){
           data = data.substring(1, data.length-1);
           $('#output').html(data);
           alert("Data: " + data);
           $('#custForm').populate(data);
         }
       );
       return false;
    });
    </script>

....... код моего сервера (php):

  $result = mysql_query($sql);

  $arr = array();
  while($obj = mysql_fetch_object($result)) {
    $arr[] = $obj;
  }
  echo json_encode($arr); 

Ответы [ 2 ]

1 голос
/ 02 марта 2011

Если вы не укажете dataType, которое будет возвращено, jQuery попытается угадать его, посмотрев на тип MIME ответа (например, заголовок HTTP Content-Type).Поскольку не похоже, что вы устанавливаете заголовок, вам необходимо:

  • установить правильный заголовок HTTP: header("Content-Type: application/json"); и / или
  • сообщает jQuery, что такое dataType, с еще одним аргументом $.post():

    $.post('get_custrec.php', {...}, function (data) {...}, 'json')

Любой из них будетхватает;использование обоих не повредит.

1 голос
/ 02 марта 2011
$.post("get_custrec.php",
    { suite_no: suite },
    function(data){
       data = data.substring(1, data.length-1);
       $('#output').html(data);
       alert("Data: " + data);
       $('#custForm').populate(data);
     }, 'json' //just need to add this ;)
   );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...