2016-02-06 43 views
2

我試圖通過AJAX從形式收到Laravel數據5.Laravel 5訪問阿賈克斯後數據

JavaScript代碼:

event.preventDefault();  // Disable normal behaviour of the element (Form) 

var formData = { 
    form: $("#newCustomerForm").serialize()  // Transmit all input data of the form serialized 
} 

console.log(formData);  // Log to the console the Input data 

$.ajax({ 
    type: 'post',   // POST Request 
    url: 'save',   // Url of the Route (in this case user/save not only save) 
    data: formData,   // Serialized Data 
    dataType: 'json',  // Data Type of the Transmit 
    beforeSend: function (xhr) { 
     // Function needed from Laravel because of the CSRF Middleware 
     var token = $('meta[name="csrf_token"]').attr('content'); 

     if (token) { 
      return xhr.setRequestHeader('X-CSRF-TOKEN', token); 
     } 
    }, 
    success: function (data) { 
     // Successfuly called the Controler 

     // Check if the logic was successful or not 
     if (data.status == 'success') { 
      console.log('alles ok'); 
     } else { 
      console.log(data.msg); 
     } 
    }, 
    error: function (data) { 
     // Error while calling the controller (HTTP Response Code different as 200 OK 
     console.log('Error:', data); 
    } 
}); 

路線:

Route::post ('user/save', '[email protected]'); 

控制器:

public function createNewCustomer (Request $request) 
{ 
    $inputArray = $request->all(); 

    print_r ($inputArray['form']); 

    // Set JSON Response array (status = success | error) 
    $response = array ('status' => 'success', 
         'msg' => 'Setting created successfully',); 
    // Return JSON Response 

    return response()->json ($response); 
} 

在netwo RK標籤我可以看到參數是如何模樣:

radio-inline-left=on&firstname=sdsd&private_lastname=&private_title=&private_birthdate=&private_email=&business_email=&private_phone=&business_phone=&private_mobile=&business_mobile=&brand=&business_job_title=&business_address_street=sdsd&business_address_po_box=&business_address_addon_1=&business_address_addon_2=&private_zip=&private_location=&business_address_street=&business_address_po_box=&business_address_addon_1=&business_address_addon_2=&private_zip=&private_location=&source=social_media&source=&availability=on&additional-info={"status":"success","msg":"Setting created successfully"} 

我也試圖訪問與$request->input('name of the field')的數據,但那麼它總是空的。

有沒有人有一個想法我做錯了什麼?

回答

1

的問題是,你在呼喚$("#newCustomerForm").serialize(),這種方法序列化url編碼參數中的表單,而不是json編碼體。

In this question爲此提供了一個答案。

0

您可以像這樣訪問

$request['name of field']; 
0

我認爲你需要在控制器接收數據的JSON:

 

    $request->json('field_of_interest') 

0

問題是你的formData變量。相反的:

var formData = { 
    form: $("#newCustomerForm").serialize()  
} 

應該

var formData=$("#newCustomerForm").serialize();