PHP将JSON对象返回给jQuery ajax调用..现在怎么办?

时间:2012-01-25 18:21:55

标签: jquery ajax json

我一直在阅读很多问题,但似乎无法找到我的特殊问题 我有一个PHP脚本返回一个fetch数组,我将其编码为JSON。我的PHP脚本中没有标题(我读过一些关于它但没有线索的信息)

PHP

if (mysql_num_rows($pquery) == 1) {
   $result = mysql_fetch_assoc($pquery);
   echo json_encode($result);

}

jQuery

$('#c_search').submit(function(){
       data = ($(this).serialize());

  $.ajax({
      url: 'actions/get_company.php',
      type: 'POST',
      data: data,
      cache: false,
      success: function(text){
          alert (text);
          alert(text[1]); // not right!
          alert(text.company[0]);// not right!
      }

}).error(function(){
    alert('error');
})
return false;

})

我回来的文字:

{"id":"167","company":"ZEN","street":"1 S Congress Ave","email":"zxyz@yahoo.com","state":"TX","zip":"78704","phone":"512-555-1212"}

如何正确处理这个问题,以便将每个单独的部分放入自己的变量中。

5 个答案:

答案 0 :(得分:3)

您可以使用dataType让jQuery将响应解析为JSON:

$.ajax({
    url: 'actions/get_company.php',
    dataType: 'json',

    [..]

data将成为普通的Javascript Object,因此您可以正常访问这些字段:

 alert (data.street);

答案 1 :(得分:2)

data: data,
cache: false,
dataType: 'json', // <!-- indicate that the response type is JSON => not necessary if your PHP script correctly sets the Content-Type: application/json response header
success: function(text) {
    alert(text.id);
    alert(text.company);
    alert(text.street);
    alert(text.email);
    ...      
}

答案 2 :(得分:2)

您可以使用JSON.parse()

$('#c_search').submit(function(){
       data = ($(this).serialize());

  $.ajax({
      url: 'actions/get_company.php',
      type: 'POST',
      data: data,
      cache: false,
      success: function(text){
          var obj = JSON.parse(text);
          alert (text);
          alert(text[1]); // not right!
          alert(text.company[0]);// not right!
      }

}).error(function(){
    alert('error');
})
return false;

})

答案 3 :(得分:2)

尝试使用数据类型:JSON或使用$ .getJSON而不是$ .ajax。

答案 4 :(得分:1)

dataType设置为json,以便为您解析json

$.ajax({
dataType:'json',
});

或者你可以通过

解析json manualy
$.ajax({
dataType:'json',
success:function(json){
     var parsedJSON = $.parseJSON(json);
 },
});

DEMO