当前位置: 首页 > 面试题库 >

使用contentType:'application / json'的Ajax调用不起作用

益何平
2023-03-14
问题内容

我有一个ajax调用,它将表单数据发送到php函数。因为我读到很多东西,所以使用contentType: 'application/json'最佳实践是我想尝试的。但是不幸的是,我的脚本在使用时不返回任何内容。如果删除它,脚本将执行应做的事情。

您知道原因可能是什么,为什么吗?谢谢!

$('#Form').submit(function(e) {
            e.preventDefault();

            var content = $(this).serialize() + "&ajax=1";

            $.ajax('app/class/controller/contactForm.php', {
              type: "POST",
              //contentType: 'application/json',
              dataType: 'json',
              data: content,
              success: function(result) {
                  console.log(result);
              }
            });
        })

和我的PHP:

if(isset($_POST['ajax']) && $_POST['ajax'] === '1') {
    echo json_encode(validateForm($_POST));
}

问题答案:

使用时,contentType: 'application/json'您将不能依赖于$_POST人口稠密。
$_POST仅针对表单编码的内容类型填充。

因此,您需要像这样从PHP原始输入读取数据:

$input = file_get_contents('php://input');
$object = json_decode($input);

当然,如果要发送application/json,则实际上应该发送JSON,而您并没有这样做。您或者需要直接将对象序列化构建为JSON,或者需要执行类似的操作-使用jQuery将表单数据转换为JavaScript对象 -以从表单序列化对象。

老实说,由于您正在处理表单数据,因此我不太认为有使用的用例application/json



 类似资料:
  • 问题内容: 我有一个ajax调用,它将表单数据发送到php函数。因为我读到很多东西,所以使用最佳实践是我想尝试的。但不幸的是,我的脚本在使用时不返回任何内容。如果删除它,脚本将执行应做的事情。 您知道原因可能是什么以及为什么吗?谢谢! 和我的PHP: 问题答案: 使用时,您将无法依靠被填充。 仅针对表单编码的内容类型填充。 因此,您需要像这样从PHP原始输入读取数据: 当然,如果要发送,则实际上应

  • 问题内容: 我注意到在jquery中使用$ .post()时,默认contentType为application / x-www-form-urlencoded- 当我的ASP.NET MVC代码需要具有contentType = application / json时 如何使$ .post()发送contentType = application / json?我已经有大量的$ .post()函

  • 问题内容: 已编辑 我有一个ajax调用(使用),它调用以下php脚本。 这持续了40秒。 如果我关闭触发调用的浏览器窗口, 即使我显式发送了一个字符串并刷新了缓冲区 ,它仍然返回false ! 请问有人在这里回答吗? 问题答案: 您将需要添加“ ignore_user_abort(true);” 在PHP脚本之上,并在从脚本中回显某些内容后调用“ ob_flush()”(有关原因,请参见 PHP

  • 问题内容: 我正在尝试使用以下API获取实时汇率。 当我单击一个按钮时,它会提示速率并正常工作。我正在使用以下Ajax代码。 Ajax请求转到以下页面。 ,其中包含唯一的按钮,当单击该按钮时,将对此URL发出Ajax请求。 一切都很好。但是,当我将按钮类型从更改为时,问题就出现了,它不起作用。Ajax函数的错误部分中的 警报框只显示了一段时间,然后突然消失了 。我找不到任何可能导致无法完成此请求的

  • 问题内容: 我制作了一个Jquery函数,该函数(目前)会动态调用该函数,并显示警告。与Firefox,铬:它的作品!当我尝试IE7(第一次)时,它失败了。如果我重新加载页面(F5)并重试,则可以!o_O 我终于明白为什么会这样。在我的旧网站中,我使用了jquery-1.3.2.min.js库。在此我使用jquery-1.4.2.js,实际上它不起作用。那么这是什么一回事?这个新版本中有错误吗?

  • 我想通过POST请求(使用ajax)发送一个到我的服务器,但是每次尝试都被CORS阻止了。阅读为什么它被封锁一点帮助都没有。在某个时候,这里的一个评论声称,不允许有contentType的POST请求(对不起,我找不到相关的帖子了)。所以我测试了一些东西。我写了以下文件: 我在端口上运行了它。使用contentType发送POST请求可以正常工作,但是get被CORS阻止。 相关javascrip