Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $request->;isXmlHttpRequest()返回false_Javascript_Jquery_Json_Ajax_Symfony - Fatal编程技术网

Javascript $request->;isXmlHttpRequest()返回false

Javascript $request->;isXmlHttpRequest()返回false,javascript,jquery,json,ajax,symfony,Javascript,Jquery,Json,Ajax,Symfony,我试图使用jquery(1.12.4)的$.ajax方法将json数据发送到我的Symfony2控制器 我的javascript: var category_type = 2; var json_data = JSON.stringify(category_type); $.ajax({ type: "POST", url: Routing.generate('homepage'),

我试图使用jquery(1.12.4)的$.ajax方法将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(“请求”)->getContent()。但当我做
var_dump($content)时,我得到一个空字符串,即
字符串“”(长度=0)

问题:

  • 为什么
    $request->isXmlHttpRequest()
    返回
    false
  • 如何设置请求头
  • 这是向服务器发送json数据的正确方法吗(
    $.ajax
  • 这是在控制器中接收数据的正确方法(
    $this->get(“request”)->getContent();
    )吗

  • 在ajax调用中尝试:

    data: { json_data }
    
    而不是:

    data: json_data
    
    如果您想查看请求中的POST数据,则必须执行以下操作:

    dump($request->request);
    
    =>我建议您使用
    dump
    功能(SF 2.6=>请参阅以使用它)

    编辑

    尝试执行这个简单的调用,如果成功,您只需使用自己的数据重现该调用:

    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
        },
    });
    

    您是否尝试过不使用
    xhr:setRequestHeader(“X-Requested-With”,“XMLHttpRequest”)
    i通常不在客户端指定任何内容……@Matteo是的,我有。但是我得到了同样的结果。@Matteo检查这篇文章的第二个答案你的Web服务器/proxy/cacheManager可以过滤一些http头吗?@Matteo我不知道如何检查。我尝试了
    data:{json_data}
    但是成功回调
    success:function(result,status,xhr){alert(result);}
    如果您
    console.log
    在ajax调用之前的“json_数据”不为空,则给出空值?在您的控制器中,只需执行
    转储($request->request);退出也尝试了这个。结果是第34行的
    DefaultController.php:ParameterBag{#9▼   #参数:[]}
    谢谢您的回答:)