Jquery Parse Json对ajax的成功

时间:2013-07-05 20:21:27

标签: jquery ajax json

我试图在我的jquery ajax成功中得到一个json:为了工作,但我没有.......

这就是我试图做的事情:

$("#addcatform").submit(function() {
  var str = $(this).serialize();
  $.ajax({
    type: "POST",
    url: "ajax.php",
    data: str,
    success: function(data){
      var json_x = data;
      alert(json_x.firstName2);
      $('#result').html(json_x.firstName2); 
      $('#result2').html(json_x.b); 
    }
  }); 

  return false;
  event.preventDefault();
}); // submit end
php回应了这个:

$arr = array ('firstName2'=>'hallo','b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);

这有什么不对吗?谢谢你帮忙!!!!

3 个答案:

答案 0 :(得分:8)

你需要在使用之前解析你的json,

您可以在请求中添加dataType - jQuery将解析您的响应json

$.ajax({
    type: "POST",
    url: "ajax.php",
    dataType: 'json',

或者,您可以自己解析它 -

success: function(data){
    var json_x = $.parseJSON(data);

答案 1 :(得分:2)

你可以试试这个:

var data=$.ajax({
        type: "POST",
        url: 'ajax.php',
        data: {
            data:str
        }, 
        async: false,
        dataType: 'json'
    });
    var msg= data.responseText;
    msg=jQuery.parseJSON(msg);

我通常从我的php页面发送一个数组或消息'error'

if(msg=='error')
{
/* do something */
}
else
// use the data

这适用于jquery 1.6-> 1.8

编辑: 由于不推荐使用jquery 1.8 async。我会推荐这种格式:

$.ajax({
        type: "POST",
        url: 'ajax.php',
        data: {
            data:str
        }, 
        dataType: 'json',
     ).done(function(data) {
      // do something with the data
     })
   .fail(function() {
    // give appropriate message
    })

http://api.jquery.com/jquery.ajax/

答案 2 :(得分:0)

data是您示例中的字符串。 使用jQuery.getJSON() 编辑:由于您无法使用getJSON(dûh)执行POST请求,请使用.ajax替换相应的数据类型。这将通过ajax检索数据,并解析生成的字符串,就好像它是JSON一样。即使使用getJSON,结果也将是一个数组(或类似于对象的数组,不确定)。这没有您可以使用点符号访问的方法或变量。您需要通过data['a']访问它。

$.ajax({
  dataType: "json",
  type: "POST",
  url: "ajax.php",
  data: str,
  success: function(data){
    var json_x = data;
    alert(json_x['firstName2']);
    $('#result').html(json_x['firstName2']);
    $('#result2').html(json_x['b']); 
  } 
}); 
相关问题