首页  >  文章  >  后端开发  >  为什么即使 PHP 返回 JSON,jQuery 的 AJAX 调用也会收到不正确的数据?

为什么即使 PHP 返回 JSON,jQuery 的 AJAX 调用也会收到不正确的数据?

Patricia Arquette
Patricia Arquette原创
2024-10-31 20:55:17824浏览

Why is jQuery's AJAX Call Receiving Incorrect Data Even Though PHP is Returning JSON?

PHP 将 JSON 返回到 jQuery AJAX 调用

尽管您努力通过 jQuery 的 AJAX 功能与 PHP 进行通信,但您仍然不断遇到“选择器已激活”错误。此外,检索到的数据似乎不正确。让我们深入研究这个问题并找出潜在的原因。

使用 JSON 返回的 PHP

下面提供的代码片段说明了如何在 PHP 中返回 JSON 数据:

<code class="php">header('Content-Type: application/json');
echo json_encode([
  'return' => 1,
  'msg1' => 'Message sent OK, we will be in touch ASAP'
]);
exit;</code>

注意包含 header('Content-Type: application/json');在 echo 之前指定 JSON 内容类型。

JavaScript 和 AJAX

下面的 JavaScript 代码应该成功处理 AJAX 调用:

<code class="javascript">$('#msgid').html('<h1>Submitting Form (External Routine)</h1>');
if ($('#formEnquiry').valid()) {
  $("#msgid").append("<h1>(Outside Ready) VALIDATED send to PHP</h1>");
  $.ajax({
    url: "ContactFormProcess3.php",
    type: "POST",
    data: $('#formEnquiry').serialize(),
    dataType: "json",
    success: function (data) {
      alert("SUCCESS:");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    },
    error: function (data) {
      alert("ERROR: ");
      for (var key in data) {
        $('#msgid').append(key);
        $('#msgid').append('=' + data[key] + '<br />');
      }
    }
  });
} else {
  $('#msgid').append('<h1>(Outside Ready) NOT VALIDATED</h1>');
}</code>

确保您的 AJAX 调用仅在表单验证后触发,以避免不必要的服务器请求。

列出的假定 JSON 数据

您获得的输出不是 JSON 格式。似乎正在打印 jQuery 的 XHR 对象。

潜在陷阱

验证以下内容:

  • 确保您的 PHP 脚本是使用正确的内容类型进行响应(内容类型:application/json)。
  • Make确保您的 AJAX 调用的 dataType 设置为“json”。
  • 检查脚本是否在服务器上成功执行,并且 PHP 是否配置为处理 JSON 输出。

以上是为什么即使 PHP 返回 JSON,jQuery 的 AJAX 调用也会收到不正确的数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn