我正在尝试将通过ajax键入的文本发送到php页面,该页面将使用收到的文本进行查询。我想知道如何将变量nmClient
的值发送到php页面。我尝试了以下代码,返回值为500 (Internal Server Error)
。我正在使用框架Symfony
Jquery的
var name = $("#name").val();
$.ajax({
url: "../search",
type: "POST",
data: {'name':name},
dataType: "json"
}).done(function(response) {
console.log(response);
}).fail(function(jqXHR, textStatus ) {
console.log("Request failed: " + textStatus);
}).always(function() {
console.log("done");
});
PHP
public function searchAction(Request $resquest)
{
if ($request->isXMLHttpRequest()) {
$name = $request->get('name');
return new JsonResponse(array('name' => $name));
}
return new Response('This is not ajax!', 400);
}
答案 0 :(得分:0)
我相信你试图在错误的地方访问参数name
。 get()
实例上提供了ParameterBag
方法,而不是Request
实例。请尝试以下方法:
$name = $request->request->get('name');
根据文档here:
每个属性都是一个ParameterBag实例(或其子类),它是一个数据持有者类:
- request:ParameterBag;
- query:ParameterBag;
- cookies:ParameterBag;
- attributes:ParameterBag;
- files:FileBag;
- server:ServerBag;
- headers:HeaderBag。
所有ParameterBag实例都有检索和更新数据的方法:
- get()按名称返回参数。
以下是该页面的示例:
// the query string is '?foo[bar]=baz'
$request->query->get('foo');
在docs示例中,参数通过 GET 方法作为查询字符串传递,但是他们通过query
ParameterBag
实例访问它们。您需要使用request
Parameter Bag
实例,因为您的参数是通过 POST 方法传递的。