2016-09-29 2 views
0

나는 해결책을 찾기 위해 모든 곳을 찾고 있었으며 모든 일을 올바르게하고 있다고 확신합니다.Laravel 5.x Ajax 배열이 작동하지 않음

내가 삭제할 컨트롤러에 채널을 통해 전달해야하는 배열의 ID 목록이 있지만 요청 개체는 항상 빈 배열을 제공합니다. $request->all()하지만 요청 개체 자체를 덤프하면 관련 속성 및 메서드를 참조하십시오.

자바 스크립트

var data = [id: 14, id:77, id:138]; //We will convert this to a json string 

$.ajax({ 
    type : 'POST', 
    url : '/orders/cancel', 
    data : JSON.stringify(data), //Outputs [{"id":"x"},{"id":"x"}] 
    headers: { 'X-CSRF-TOKEN':token }, 
    success: function(){ //the usual }, 
    error: function(){ //the usual } 
}); 

Laravel 경로

Route::any('/orders/cancel', '[email protected]'); 

감사관

namespace My\Namespace; 

use Illuminate\Http\Request; 
//other irrelavant `use` statements omitted 
class BackOrderedOrdersController extends Controller 
{ 
    public function cancelAction(Request $request) 
    { 
     dd($request->all()); //This just outputs '[]' : empty array 
    } 
} 

응답 상태가 200 의미 다 괜찮되지만 게시 된 데이터가 일부 컨트롤러에 도달하지 않습니다 이유.

폼에서 오는 데이터가 없으면 Ajax Post에서 작업해야 할 때가 처음입니다. 또한 문제인지 여부에 대해서는 조금 주저합니다.

json으로 데이터 유형을 지정했을 때도 FIREBUG 출력으로 application/x-www-form-urlencoded;charset=UTF-8으로 정의 된이 컨텐츠 유형이 내 내기가됩니다. 나는 부분적으로이 내용 유형과 인코딩이 수반되는 것이지만이 경우 무엇인지를 부분적으로 알고 있습니다.

누군가 데이터가 누락 된 부분에 대해 정확한 방향을 제시 할 수 있습니까? 그것은 JQuery 문제, Laravel 문제 또는 무엇입니까?

+0

'Route :: post ('/ orders/cancel ','BackOrderedOrdersController @ cancelAction ');'를 사용해 보셨습니까? –

답변

1

은 다음과 같이 귀하의 아약스 요청을 변경하려고 :

$.ajax({ 
    type : 'POST', 
    url : '/orders/cancel', 
    data : { 
     ids: data, // your array of ids 
     _token: token // your token csrf_token() 
    }, 
    success: function(){ //the usual }, 
    error: function(){ //the usual } 
}); 

을 알려 주시기 바랍니다 당신을 위해 작동하는지.

0

감사합니다 귀하의 답변과 조언을 모두하지만, 아래는 제가 데이터 입력 내 아약스 호출하고 결국 무엇을 :

...  
data: { "customer": $('#CustomerId').text(), "orders": params }, 
... 

이 내 아약스 게시물에 대한 완벽하게 잘 작동했다. 다시 한번 감사드립니다.

+0

기본적으로 JSON.stringify 클래스를 제거하고 ajax 호출 내에서 {data : data}를 수정했습니다. – Maximum86