2012-02-20 54 views
0

我有下面的代码:修改输入字段与JSON数据

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

docsel.php返回一个JSON编码阵列titrecontent和他们的价值观。 我检查了返回的数据是否正确。

现在我想修改输入字段的结果,但我的代码不起作用。 我在做什么错?

编辑

下面是数据(我把导演,而不是内容的简化):

"[{"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

你把这段代码放在哪里? – Tadeck 2012-02-20 17:14:29

+0

不是答案,但你不需要选择输入,因为'id'总是唯一的:'$('#titre')'。还是你说这不是独一无二的? – PeeHaa 2012-02-20 17:15:05

+0

BTW什么是滴定? – PeeHaa 2012-02-20 17:15:33

回答

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

我相信你确实需要指定何时将返回的数据解析为JSON。 如果输出字符串而不是对象,则可以测试通过console.log(data)返回的数据,但尚未解析。

+0

+1,这可能是(可能)的问题,我自己做了很多次。 – 2012-02-20 17:21:11

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); 
} 
+0

它的工作原理!由于某些未知原因,语法:'$('#titre')。val(titre); '不适合我。我试过'$('[name = titre]')。val(titre);'我的问题解决了。非常感谢您的帮助。 – 2012-02-21 12:22:40

+0

@AlexLeguevaques:不客气。 :-) – 2012-02-21 14:57:32