通过 AJAX 传递数据以 NULL 值响应
Passing data via AJAX responds in NULL values
将附加数据传递到我的 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 我认为这不是标准行为?
尝试 data:{model:model}
而不是 JSON.stringify({"model": model})
。查看更多信息http://api.jquery.com/jquery.ajax/
这样传数据,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){}
});
});
为什么
通常 get 是一个查询字符串,其中数据通过 URL 传递,变量附加到 URL 和 POST 数据通过请求正文传递 POST 可以传递比 GET 更多的数据。在 GET 中,所有内容都必须是您 URL 的一部分 POST 中不能添加更多数据 您的所有数据都必须通过邮件正文发送
as basic as it get
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
处理 get 和 POST data
将附加数据传递到我的 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 我认为这不是标准行为?
尝试 data:{model:model}
而不是 JSON.stringify({"model": model})
。查看更多信息http://api.jquery.com/jquery.ajax/
这样传数据,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){}
});
});
为什么
通常 get 是一个查询字符串,其中数据通过 URL 传递,变量附加到 URL 和 POST 数据通过请求正文传递 POST 可以传递比 GET 更多的数据。在 GET 中,所有内容都必须是您 URL 的一部分 POST 中不能添加更多数据 您的所有数据都必须通过邮件正文发送
as basic as it get
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
处理 get 和 POST data