2016-10-11 10 views
0

ajaxを使用してカスタムビルドデータオブジェクトをLaravelコントローラに渡すことができません。これまでのところAJAXを使用してかなり堅牢なWebアプリケーションを構築することができたので、これは非常に不満です。しかし、これは困難であることが判明しています。Laravel 5.2カスタム投稿データが渡されない

質問が複数の回答を含むことができる調査を構築しています(該当するものをすべて選択してください)。form.serialize()関数を使用するのではなく、自分で作成した応答オブジェクトを作成しました。サーバー側でレコードを保存します。関数が

function TraceHrForm(e) 
{ 
    e.preventDefault(); 
    var post_url=$(this).attr('url'); 
    var get_url=$(this).data('url'); 
    var tag=$(this).attr('tag'); 
    var checked = $("input[name*='sq']:checked"); 
    var addinfo=$("input[name='additional_info']"); 
    post_data=[]; 
    checked.each(function(){ 
    post_data.push({'sq_id': this.id, 'response': this.value}); 
    }); 
    addinfo.each(function(){ 
    if(this.value.length>0) 
    { 
     post_data.push({'sq_id':this.id,'additional_info':this.value}); 
    } 
    }); 
    pdata={survey_response: post_data}; 
    $.ajax({ 
    type: "post", 
    url: post_url, 
    data: pdata, 
    headers: {'Content-type': "application/json"} 
    }).done(function(response){ 
     console.log(response); 
    }); 
} 

を下回っている私は、オブジェクトpdataが正しく構築されており、routes.phpのファイルは、右のコントローラ機能にリクエストを送信しますが、私はコントローラ機能にリクエストオブジェクトを調べる際にクロームのDevツールで見ることができます、データは存在しない。私もちょうど$request->input(survey_response)

と同様$requestオブジェクトを見てみました

public function submit(Request $request, TraceHrSurvey $thr) 
    { 
     return var_dump($request->all()); 

任意の考えを最も高く評価されるだろう。

答えて

0
のようなドット表記を使用して、プロセスを確認するためにウルページ内のウル送信されるデータをcosole.logすることができます

Ahmedさん、ありがとうございましたが、JSONデータをサーバーに渡すことにのみ関心がありました。私は以下の方法で自分のコードを変更することで私の問題を解決することができました。

function TraceHrForm(e) 
{ 
    e.preventDefault(); 
    var post_url=$(this).attr('url'); 
    var get_url=$(this).data('url'); 
    var tag=$(this).attr('tag'); 
    var checked = $("input[name*='sq']:checked"); 
    var addinfo=$("input[name='additional_info']"); 
    var post_data='{"survey_response": ['; <--Modified from array to object 
    checked.each(function(){ 
    post_data += '{"sq_id":"' + this.id + '", "response": "' + this.value + '"},'; 
    }); 
    addinfo.each(function(){ 
    if(this.value.length>0) 
    { 
     post_data += '{"sq_id":"' + this.id + '", "additional_info": "' + this.value + '"},'; 
    } 
    }); 
    var ind = post_data.length -1; 
    post_data = post_data.substring(0,ind); 
    post_data += ']}'; 
    $.ajax({ 
    type: "post", 
    url: post_url, 
    data: post_data 
    }).done(function(response){ 
    if(response=="1") 
    { 
     loadComponent(post_url,"#trace_hr"); 
    } 
    else { 
     alert('Trace Survey Did not save'); 
    } 
    }); 
} 

ザ・私のLaravelコントローラ機能に私は単にコール

public function submit(Request $request, $id) 
    { 
    $jdata=$request->json('survey_response'); 

を作って、私は私が反復処理でき連想配列の配列を持っていました。私はそれがどのように働いたのか分かりませんが、私は満足しています。

0

試し

$sentdata = $request->all(); 
return $response()->json([ 
    'result' => 'success', 
    'data' => $sentdata, 
]); 

のようにバックページにJSONレスポンスを返すようにして、uは

console.log(response.result); 
関連する問題