5

jquery ajax successe で json を取得しようとしています: to worke but dodos not.......

それが私がやろうとしたことです:

$("#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);

これの何が問題なのですか?助けてくれてありがとう!!!!

4

3 に答える 3

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 ページから配列またはメッセージ「エラー」を送信します。

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/

于 2013-07-05T20:53:14.983 に答える
0

dataあなたの例では文字列です。jQuery.getJSON()を使用します。 編集: getJSON で POST リクエストを実行できないため (当然) .ajax、代わりに適切な dataType を使用します。これにより、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']); 
  } 
}); 
于 2013-07-05T20:28:45.750 に答える