2016-09-29 2 views
0

Я искал везде решения, и я убежден, что все делаю правильно.Laravel 5.x Ajax Сообщение из массива не работает

У меня есть список идентификаторов в массиве, который мне нужно передать в контроллер для удаления, но объект запроса всегда дает мне пустой массив, когда я делаю $request->all(), но если я сам сброшу объект запроса, я могу см. его и связанные с ним свойства и методы.

JavaScript

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 без моих данных, поступающих из формы, а также я немного неохотно отношусь к тому, является ли это проблемой.

Моя ставка по этому типу содержимого определена как application/x-www-form-urlencoded;charset=UTF-8 от FIREBUG, даже если я задал тип данных как json. Я частично осведомлен о том, что касается этого типа содержимого и кодировки, но в этом случае.

Может ли кто-то определить меня в правильном направлении относительно того, где данные пропущены? Это проблема JQuery, проблема с Laravel или что?

+0

Вы попробовали 'Route :: post ('/ orders/cancel', 'BackOrderedOrdersController @ cancelAction');'? –

ответ

1

попробуйте изменить запрос AJAX, как это:

$.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

Спасибо всем за ваши ответы и советы, но ниже того, что я в конечном итоге делает в моем AJAX вызова для ввода данных:

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

Это работало отлично для моего AJAX пост. Еще раз спасибо.

+0

В основном я удалил класс JSON.stringify и сделал {data: data} внутри моего вызова ajax с изменением курса. – Maximum86