使用JSON数据修改输入字段

时间:2012-02-20 17:13:08

标签: php jquery json

我有以下代码:

$.post("docsel.php", {id : id}, function(data) {
   $('input#titre').val(data.titre);
   $('input#content').val(data.content);
});

docsel.php返回带有titrecontent的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的绝对初学者。

2 个答案:

答案 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);
}