2016-10-11 60 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文件文件將請求發送到正確的控制器功能,但Chrome瀏覽器開發工具看到我檢查控制器功能的請求對象,目前沒有數據。

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

我也嘗試只是在$request對象找以及$request->input(survey_response)

任何想法,將最讚賞。

回答

0

謝謝艾哈邁德,但我只對將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

嘗試返回JSON響應返回頁面像

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

然後u能cosole.log烏爾頁面內烏爾發送的數據,檢查過程中,使用點符號像

console.log(response.result);