我正在尝试使用jquery的$ .ajax方法(1.12.4)将json数据发送到我的Symfony2控制器。
我的javascript:
var category_type = 2;
var json_data = JSON.stringify(category_type);
$.ajax({
type: "POST",
url: Routing.generate('homepage'),
contentType: 'application/json',
dataType: "json",
data: json_data,
beforeSend: function (xhr){
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
},
success: function (result, status, xhr) {
console.log(result);
console.log(status);
},
error: function(xhr, status, error) {
console.log(error);
console.log(status);
}
});
我的控制器:
/**
* @Route("/", name="homepage", options={"expose"=true})
*/
public function indexAction(Request $request) {
if($request->isXmlHttpRequest()){
$content = $this->get("request")->getContent();
$cat = json_decode($content, true);
var_dump($content);
exit;
}
else {
echo 'Sorry!';
exit;
}
然而我收到消息抱歉!每次。现在我不确定我是否正确使用了xhr: setRequestHeader("X-Requested-With","XMLHttpRequest"),
。但没有它我会得到相同的结果。
我也尝试删除if/else
条件并尝试$content = $this->get("request")->getContent();
。但是当我做var_dump($content);
时,我得到一个空字符串,即。 string '' (length=0)
问题:
$request->isXmlHttpRequest()
会返回false
?$.ajax
)的正确方法吗?$this->get("request")->getContent();
)中接收数据的正确方法吗?答案 0 :(得分:1)
在你的ajax电话中试试:
data: { json_data }
而不是:
data: json_data
如果你想从请求中看到POST数据,你必须这样做:
dump($request->request);
=>我建议您使用dump
功能(SF 2.6 =>请参阅doc来使用它)
修改强>
尝试做这个简单的调用,如果它有效,你只需要用你自己的数据重现它:
var data = {"name":"John Doe"}
$.ajax({
dataType : "json",
contentType: "application/json; charset=utf-8",
data : JSON.stringify(data),
success : function(result) {
alert(result.success); // result is an object which is created from the returned JSON
},
});