json(1.12.4)の$ .ajaxメソッドを使用して、symfony2コントローラにjsonデータを送信しようとしています。
私の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);
をすると、空の文字列ieが得られます。 string '' (length=0)
質問:
- なぜ
$request->isXmlHttpRequest()
リターンfalse
していますか? - リクエストヘッダを設定するにはどうすればよいですか?
- jsonデータをサーバーに送信する正しい方法ですか(
$.ajax
)? - コントローラでデータを受信する正しい方法ですか(
$this->get("request")->getContent();
)?data: { json_data }
の代わり:
あなたがしようとしたことがあり:6 =>
EDIT
この単純な呼び出しを行うことを試してみて、それが動作するかどうかあなたは自分自身のデータでこれを再現するために持っている)、それを使用するdocを見ます'xhr:setRequestHeader(" X-Requested-With "、" XMLHttpRequest ")'私は通常、クライアントサイドには何も指定しません.... – Matteo
@Matteoはい、あります。しかし、私は同じ結果を得る。 – utkarsh2k2
@Matteoはこの投稿の2番目の答えをチェックします。http://stackoverflow.com/questions/4658789/symfony-request-isxmlhttprequest-issue – utkarsh2k2