无法使用 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 对象的默认值的主要内容,如果未能解决你的问题,请参考以下文章