通过AJAX传递数据以NULL值响应
将其他数据传递到我的REST服务器时效果不佳。通过AJAX传递数据以NULL值响应
我有这个简单的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的末尾,我觉得这是不是一个标准的行为?
为什么
通常得到的是一个查询字符串,其中数据通过带有变量的URL传递给URL和POST,数据通过请求体传递POST可以传递更多数据然后GET。在得到的一切必须是网址中没有更多的数据可以在POST加入一部分的所有数据都有throught邮件正文
发送为基本,因为它得到
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你有一些所谓的java的$_REQUEST;
你会使用request.getParameters
将自动为您处理这个 手柄$_REQUEST
GET和POST数据
试试data:{model:model}
而不是JSON.stringify({"model": model})
。查看更多信息http://api.jquery.com/jquery.ajax/
我尝试过,但没有运气。感谢您输入Nouphal。 – Magiranu
传递这样的数据,数据:{模式:JSON.stringify(模型)},
$(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){}
});
});
我不好,我把编辑在错误的地方,我忘了我的回答是评论 –
我不要以为你可以在TYPe中传递数据= get test POST –
@ReubenGomes从GET更改POST类型的工作,但我想知道为什么。官方文件并不是真的,不幸的是,明确的。你可以写一个小贴子,我会接受你的答案。谢谢。 – Magiranu
Magiranu请检查以下 –