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

时间:2015-12-11 06:59:45

标签: php jquery json ajax forms

我正在尝试使用ajax来验证一个简单的表单,但我正在使用3个部分。前side.html,后side.php和主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填充它,但它失败并且我的错误选项“它不起作用”有错误或未能添加内容吗?

3 个答案:

答案 0 :(得分:0)

使用.从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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

修复你的ajax:

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

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