我有以下代码:
$.post("docsel.php", {id : id}, function(data) {
$('input#titre').val(data.titre);
$('input#content').val(data.content);
});
docsel.php
返回带有titre
和content
的JSON编码数组及其值。
我检查了返回的数据是否正确。
现在我想用结果修改输入字段,但我的代码不起作用。 我做错了什么?
修改:
这是数据(我把auteur而非内容简化):
"[{"titre":"Dipt\u00e9rosodomanie et t\u00e9trapilotomie radiaire, pourquoi ?","auteur":"Alex"}]"
我修改了我的代码:
$.post("docsel.php", {id : id}, showResult(data));
});
});
function showResult(data)
{
var obj = JSON.parse(data);
var titre = obj.titre[0];
$('#titre').val(titre);
但它不起作用,我的意思是输入字段“titre”未被修改。请注意我是JQuery / Php的绝对初学者。
答案 0 :(得分:2)
$.post("docsel.php", {id : id}, function(data) {
$('input#titre').val(data.titre);
$('input#content').val(data.content);
}, "json");
我相信您确实需要指定何时将返回的数据解析为JSON。
您可以测试通过console.log(data)
返回的数据,如果它输出的是字符串而不是对象,则它尚未被解析。
答案 1 :(得分:0)
$.post("docsel.php", {id : id}, showResult(data));
这将运行showResult
函数,然后使用其返回值(undefined
)作为回调。
应该是:
$.post("docsel.php", {id : id}, function(data){
showResult(data)
});
或者,更好的是:
$.post("docsel.php", {id : id}, showResult);
您不需要自己使用JSON.parse
。只需将'json'
传递给$.post
,它就会为您完成。
$.post("docsel.php", {id : id}, showResult, 'json');
function showResult(data){
var titre = data[0].titre; // Data is an array of objects
$('#titre').val(titre);
}