2011-07-01 16 views
0

ajax、json、PHPを使用した送信フォームでの作業。データはDBで適切に処理されますが、アラート(data.success)付きのこのスクリプトでは、data.successは未定義です。 I警告(データ)、それは私が必要なものを示している場合{"success":"http:\/\/myaddress.com"}data.success undefined

function confirmSubmit() { 
$.ajax({ 
    type: 'POST', 
    url: 'index.php?route=payment/authorize/send', 
    data: $('#authorize :input'), 
    beforeSend: function() { 
     var img = '<?php echo $text_wait; ?>'; 
     $('#authorize_button').attr('disabled', 'disabled'); 

     $('#authorize').before('<div class="wait"><img src="catalog/view/theme/default/image/loading_1.gif" alt="" /> ' + img + '</div>'); 
     alert('Start'); 
    }, 
    success: function(data) { 
     if (data.error) { 
      alert('errors...'); 
      alert(data.error); 

      $('#authorize_button').attr('disabled', ''); 
     } 

     $('.wait').remove(); 

     if (data.success) { 
      alert('success! It should redirect.'); 
      location = data.success; 
     } 
     else { 
      alert('it worked... but won\'t redirect...'); 
      alert(data.success); 
     } 

    } 
}); 
alert('End'); 

}

答えて

4

がありますが、応答を解析しません。 dataはまだ文字列です。

$.ajaxオプションにdataType: 'json'を設定します。

さらに良いことに、あなたは、PHPでの応答のための適切なコンテンツタイプに設定した場合:データ型を追加

header('Content-type: application/json.'); 
+0

ああチーズクラッカー.....ありがとう、どうしたらそれを無視したのですか? – Robbie

+0

@Robbie:Btw。私はあなたがすでにいくつかの質問をしてきたのを見ましたが(実際はかなり前です)、あなたは何の答えも受け入れていませんでした。それらのどれもあなたを助けませんでしたか?すぐに役立つ回答を受け付ける必要があります。 –

+0

ああ...ありがとう、私はここに頻繁にそれを実現するのに十分ではない。 – Robbie

0

試してみてください。それ以外の「JSON」かをjQuery.parseJson(データ)とJSONとしてあなたのデータ応答を解析