Я пытаюсь отправить данные json на свой контроллер Symfony2, используя метод $ .ajax jquery (1.12.4).
Мой 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
? - Как установить заголовок запроса?
- Это правильный способ отправить данные json на сервер (
$.ajax
)? - Правильно ли это прием данных в контроллере (
$this->get("request")->getContent();
)?
Вы пробовали без строки 'xhr: setRequestHeader (« X-Requested-With »,« XMLHttpRequest »)' я обычно не указываю ничего на стороне клиента .... – Matteo
@Matteo Да, у меня есть. Но я получаю тот же результат. – utkarsh2k2
@Matteo проверить второй ответ в этом сообщении http://stackoverflow.com/questions/4658789/symfony-request-isxmlhttprequest-issue – utkarsh2k2