Передача данных через AJAX отвечает значениями NULL

Передача дополнительных данных на мой REST-сервер работает не очень хорошо.

У меня есть этот простой вызов ajax:

// Client
$(document).on('click', '#car', function(e){
e.preventDefault();
var name  = $(this).data('name');    // Tesla
var model = $(this).data('model');  // X
$.ajax({
type: "GET",
contentType: 'text',
cache: false,
url: "http://server:80/api/v1/cars/" + name,
data: JSON.stringify({
"model": model
}),
success: function(data, textStatus, jqXHR){ },
error: function(jqXHR, textStatus, errorThrown){}
});
});

Проблема в том, что model всегда NULL на моем сервере, тогда как car работает нормально. Я также var_dumped весь запрос и искал model но это не там, к сожалению.

// Server
public function show($request, $response, $args)
{
$model = $request->getParsedBody()['model'];
$name  = $args['id'];

echo $model;     // NULL
echo $name;      // Tesla
}

Я также не понимаю, почему мой URL-адрес запроса выглядит так под инструментами разработки в браузере:

http://server:80/api/v1/cars/Tesla.txt?{"model":"X"}

Он помещает JSON в конец URL-адреса запроса, и я думаю, что это не стандартное поведение?

0

Решение

Зачем

Обычно get — это строка запроса, где данные передаются через URL с переменными, добавленными к URL, и POST, когда данные передаются через тело запроса, POST может передавать больше данных, чем GET. в GET все должно быть частью вашего URL, больше данных нельзя добавлять в POST, все ваши данные должны быть отправлены через тело сообщения

как простой

Your typical query String : http://example.com/over/there?name=ferret&sname=somethingelse

Yout would use $_GET['name'];

and For POST

URL:http://example.com/over/there
Message Body name=ferret&sname=somethingelse

$_POST['name'];

так в php у вас есть то, что называется $_REQUEST;
в jave вы бы использовали request.getParameters который будет автоматически обрабатывать это для вас
этот $_REQUEST обрабатывает как получить, так и POST-данные

1

Другие решения

Попробуй просто data:{model:model} вместо JSON.stringify({"model": model}), Смотрите больше информации http://api.jquery.com/jquery.ajax/

1

Передайте данные следующим образом: data: {model: JSON.stringify (model)},

$(document).on('click', '#car', function(e){
e.preventDefault();
var name  = $(this).data('name');    // Tesla
var model = $(this).data('model');  // X
model = JSON.stringify(model);

$.ajax({
type: "GET",
contentType: 'text',
cache: false,
url: "http://server:80/api/v1/cars/" + name,
data: {model:model},
success: function(data, textStatus, jqXHR){ },
error: function(jqXHR, textStatus, errorThrown){}
});
});
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector