php - 错误 - 使用 JSON 将数组从 PhP 传递到 jQuery

标签 php jquery ajax arrays json

我很抱歉,因为我知道有人问过这个问题 before ,超过 once .

我已经和这个小家伙斗争了好几个小时了,但我似乎找不到我的错误。

问题很简单 - 我有一个 PhP 数组,我想使用 jQuery AJAX 和 JSON 格式的数据将其从服务器端传递到客户端。

我的客户端 Ajax 调用的代码是

$.ajax({
  url: 'php/test/pass_array.php',
  method: 'POST',                            
  data: {test1: 'abc', test2: 'cde'}, //Random input data
  dataType: 'json',
  success: function(response_data)
  { 
    console.log(response_data);

  },
  error: function(jqXHR, textStatus, errorThrown) 
  {
    console.log(arguments);
    console.log('Error: ' + errorThrown + ' ' + textStatus + ' ' + jqXHR);
  }
});

我的服务器端 pass_array.php 脚本的代码是

header('Content-type: application/json; charset=utf-8');

echo json_encode(array("Name"=>"Johnny"));  //Build JSON object from the array

正如您所看到的,这是非常基本的,但它不起作用。在客户端,永远不会收到 AJAX 响应。

当我检查浏览器控制台日志时,我得到

Error: SyntaxError: Unexpected token  parsererror [object Object] 

我到底做错了什么?魔鬼

我的所有文件均采用 UTF-8 编码。如果我删除 PhP 端的 dataType: 'json' 和 header() ,这也有效。在这种情况下,我得到以下字符串:

{"Name":"Johnny"} 

更新

注释掉 PhP 端的 header() 代码会使控制台显示以下错误:

Uncaught SyntaxError: Unexpected token o

怎么会有语法错误呢?我创建了一个 PhP 数组并使用 json_encode 对其进行编码。

更新#2

已修复。

在我的 PhP 文件中,我有(只有一个!)行

include '../core/db_io.php';

我评论了该行并且效果很好。

此文件包含查询我的数据库的方法。由于我没有从该文件中调用任何方法或对象,因此我没有对其进行注释 - 认为这没有什么区别。

看起来,db_io.php 文件在 JSON 字符串中添加了一个字节顺序标记字符 (\ufeff)。

发送到客户端的完整字符串是

\ufeff{"Name":"Johnny"}

这个 db_io.php 文件似乎是用 BOM 编码的。更改其编码(使用 Notepad++ )解决了这个问题。

令人惊奇的是,一个简单的 include 指令会搞乱 AJAX 调用。

最佳答案

尝试检查您的 ajax 函数是否被触发,以及是否有任何请求被发送到您的 php 代码。例如,您的 ajax 脚本中可能存在某些语法,或者您没有提供 php 文件的 url。

关于php - 错误 - 使用 JSON 将数组从 PhP 传递到 jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20461493/

相关文章:

php - 将 json_decode 数据从最旧到最新存储在 MySql 数据库中

php - Symfony-传递后参数返回相同

jquery - 从 Django 中的表单发送 DELETE 请求

javascript - 在指定的 div block 中通过 ajax 渲染模态局部 View

php regex - 干净的文件名

php - 如何从 Yii2 中的模型获取当前模块对象

javascript - 如果选择日期,隐藏图标

jquery - 输入改变边界半径+建议

ASP.NET页面webmethod AJAX调用请求超时

Javascript $.get 并不总是在点击时更新