无法使用 ajax 提取 json 对象的默认值

Posted

技术标签:

【中文标题】无法使用 ajax 提取 json 对象的默认值【英文标题】:Cannot extract default values for json object using ajax 【发布时间】:2016-03-17 00:40:29 【问题描述】:

我正在尝试使用 ajax 来验证一个简单的表单,但我使用的是 3 个部分。 front side.html、back side.php 和 main javascript.js。我也在使用伪服务器。问题就在这里。

$("#InsertDefault").click(function()
 $.ajax("backend.php?act=default",  success: function(result)
console.log($.parseJSON(result))
data = $.parseJSON(result);
document.getElementById("name").value = data["name"]
,
error: document.getElementById("errors").innerHTML  = "<li>It didn't work...  </li>"      
); // ajax close
); //click close

当我调用ajax时,我想输入backend.php,并将参数“act”设置为默认值。

// Return JSON default data if requested
if ($_REQUEST['act'] == 'default')
$defaultData = array('name' => "Jane", 'postal' => "L5B4G6", 'phone' => "9055751212",'address' => "135 Fennel Street");
echo json_encode($defaultData);

如果这可行,我对 ajax 调用有一个成功选项,该选项采用“result”(默认值作为字符串)并将其解析为 JSON,从而生成一个名为 data 的对象。当我从默认情况下应为“Jane”的数据中获取名称并将其放入我的文本字段的值字段中时

<input type="text" id="name" name="name"/>

它应该使用名称 Jane 填充它,但它却失败了,并且我的错误选项“它不起作用”是否犯了错误或未能添加某些内容?

【问题讨论】:

【参考方案1】:

你在 php 部分的 echo 之前缺少 header('Content-type: application/json'); 的东西。目前 ajax 得到的是纯文本而不是 json 响应。

【讨论】:

我尝试在里面添加那行,但它似乎没有帮助改变任何东西。【参考方案2】:

修复你的 ajax:

$.ajax(
url:"backend.php?act=default",
success: function(result)
  $("#name").val(result.name);
);

在 backend.php 中使用标头 header('Content-type: application/json');

【讨论】:

虽然更吸引人,但我在替换您的代码时遇到了新错误,与未知标识符有关【参考方案3】:

使用. 在javascript 中访问数组中的任何内容,

合作

改变

document.getElementById("name").value = data["name"]// this is in php

var data = $.parseJSON(result);
alert(data.name)
document.getElementById("name").value = data.name
                                             ^
data.name;// for name,
data.postal;// for postal code
..// so on

【讨论】:

这给了我一点希望,因为控制台打印了默认的 json 对象!但由于某种原因它停止工作,我无法提取名称......

以上是关于无法使用 ajax 提取 json 对象的默认值的主要内容,如果未能解决你的问题,请参考以下文章

无法快速从 JSON 中正确提取数据

json数据提取并使用ajax调用传递给C#

Safari错误。 Javascript ajax json对象 - 无法获取属性。对象可能不再存在

如何在 $.ajax 响应中从 JSON 中提取数组

Ajax(从json中提取数据)

ajax返回json对象的两种写法