2011-03-23 15 views
0

jQuery.ajaxを使用してjson文字列をphpページに送信しています。ここで、配列を取得して変数を仲介しようとしています。なんらかの理由で、私はスクリプトを実行するとFirebugでPOSTを見ることができますが、私が得るすべてのパラメータを取得しようとすると空のArray()になります。私はこれを数時間にわたって把握しようとしていて、私の知恵の終わりにいる。私はasp.netから.phpに移行しているので、私はまだ構文が少し新鮮ですが、これはかなり簡単なはずです。JQUERY AJAXを使用して渡されたJSONオブジェクトにアクセスできません

ここにjquery sendのコードを示します。

$('#form_add').submit(function() { 
    var serial_data = $(this).serialize(); 
    $(".page_content").fadeOut("slow", function(){ 
     $.get(uri_base +'/'+uri_cont+'/get_db_name/true/'+Math.random(), function(data) { 
      $.ajax({ 
       type: 'POST', 
       url: uri_base +'/AJAX/add_record/'+data+'/'+Math.random(), 
       data: serial_data, 
       contentType: "application/json", 
       success: function(data){ 
        $.ajax({ 
         type: 'POST', 
         url: uri_base +"/"+ uri_cont +"/"+ uri_func, 
         data: data, 
         success: function(data){ 
          alert(data) 


         }, 
         error: function(xhr, ajaxOptions, thrownError){ 
          alert(xhr.status); 
          alert(thrownError); 
         } 

        }); 

       }, 
       error: function(xhr, ajaxOptions, thrownError){ 
        alert(xhr.status); 
        alert(thrownError); 
       } 

      }); 

     });      
    }); 
    return false; 
}); 

最初の.get()は無視し、次のURLを完成させるために変数を取り戻すだけです。 first.ajax()コールはシリアル化されたフォームデータをAJAXコントローラに送り、dbにプッシュします。コントローラからの戻り値は、jsonに変換されたオブジェクトの配列を返します。

if(isset($key)){  
    $data['add_msg'] = $this->model_ajax->add_record($table,$array); 
    $exploded_data = json_encode($data['add_msg']); 
    print_r($exploded_data); 
    exit; 
} 

そこから次のアヤックスは、().pag_content divの中に表示するビューを引き戻すために私のコントローラにデータを送信することになっています。私はjsonオブジェクトをエコーし​​ようとしました。各ループがキーを引き出すために、そして無数の他のものをエコーし​​ようとしました。何も... JSONの無効なエラー(デコードしようとすると)、ちょうど "Array()"の出力、またはループするときに何も表示されません。

これは、コントローラのコードと私は放火魔に見ていPOST出力である...

echo $_POST; 

$array = $_POST; 
echo $array; 

foreach($_POST as $key){ 
    echo $key; 
} 
exit; 

[{"id":"29","datetime":"2011-03-23 12:10:25","full_name":"Leroy Brown","email_address":"[email protected]","password":"asdf","id_group":"0","id_sites":"0","active":"0"}] 

答えて

0

PHPであなたの出力前に、適切なコンテンツタイプを送信してください。 JQueryやmootoolsのようなフレームワークは、Accept文字セットでフィルタリングする傾向があります(Firebugで見ることができます)

header( "Content-Type:application/json"); //また、あなたのフレームワーク

:)に応じて、放火魔に受け入れヘッダをチェックし、テキスト/ jsonの可能性があり

+0

マイリクエストヘッダが現在のアプリケーション/ JSONに設定されているが、私は同様にさまざまな種類を試してみました。どうにかしてそれを発射しようとしています。 :)私の応答ヘッダーはtext/htmlに設定されています。 ajax()関数のContent/Typeパラメータがデータを返すためのものであり、送信用ではないと仮定して正しいのですか? – leviathenator

+0

さて、はい、それは全体のポイントです。リクエスト自体にはコンテンツタイプはありません。それはレスポンスのためです。 コンテンツタイプを上記の引用符で囲んだように設定してください(PHPでは!!!です)。試してみてください:) – SchizoDuckie

+0

私の問題は、コードの上のどこかで "return true"という理由があったためです。なぜ私はそれをそこに持っていたのか分かりませんが、一度それを取り出したら、完璧に働きました。助けてくれてありがとう!!! – leviathenator

関連する問題