2012-02-20 5 views
0

JSONデータを入力フィールドを変更します。は、私は、次のコードを持っている

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

docsel.phptitrecontentとその値をJSONエンコードされた配列を返します。 返されたデータが正しいことを確認しました。

これで入力フィールドを結果で変更したいのですが、コードが機能しません。 私は何が間違っていますか?

EDIT:ここ

は(私は映像作家を入れて簡素化する内容ではない)データである:

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

それ動作しません、私は入力フィールド "力価"が変更されていないことを意味します。私がJQuery/Phpの絶対初心者であることを考慮に入れてください。

+0

このコードはどこに記入しましたか? – Tadeck

+0

答えはありませんが、 'id'は常に一意であるため、入力を選択する必要はありません:' $( '#titre') '。それとも独特ではないと言っていますか? – PeeHaa

+0

BTW力価とは何ですか? – PeeHaa

答えて

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、これは(おそらく)問題です、私はこれを自分自身でやり過ぎました。 –

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);を試して、問題は解決しました。ご助力ありがとうございます。 –

+0

@AlexLeguevaques:どうぞよろしくお願いいたします。 :-) –

関連する問題