3

jQuery jEditable edit-in-place フィールドを使用していますが、JSON 関数が返され、edit-in-place コールバックから値を返そうとすると、得られるのはフラッシュだけです

これはここで見ることができます...

http://clareshilland.unknowndomain.co.uk/

Ctrl+L を押してログイン...

ユーザー名: stackoverflow
パスワード: jquery

/script.js でスクリプトを見ることができますが、ここにメインコードの抜粋があります...

$('#menu li a').editable(edit_menu_item, { cssclass: 'editable' });

コールバックは次のとおりです。

function edit_menu_item(value, settings) {

 $.ajax({
  type : "POST",
  cache : false,
  url  : 'ajax/menu/edit-category.php',
  dataType: 'json',
  data : { 'id': this.id, 'value': value },
  success : function(data) {

   if (data.status == 'ok') {
    alert('ok');
    return data.title;
   } else {
    alert('n/ok');
    return this.revert;   
   }

 }});

}

JSON コードは次のとおりです: ajax/menu.edit-category.php

Edit-in-place は、jQuery ソート可能なメニューにもあります。シングルクリックで編集。Enter を押して保存すると、データは保存されますが、その場編集フィールドでは更新されません。

スタックオーバーフローを助けてください、私はメガエイジのためにこれに取り組んできました。

前もって感謝します!

4

3 に答える 3

4

編集可能なホームページ ( http://www.appelsiini.net/projects/jeditable ) から:

関数は文字列を返さなければならないことに注意してください。通常、編集されたコンテンツ。これは、編集が完了するとページに表示されます。

edit_menu_item は文字列を返しません-値を返すことでそれを回避できるように思われます。実際の内容を更新する必要がある場合は、ajax リクエストの成功のコールバックで行います。念のため、エラー コールバックを追加することもできます。

おそらく悪い考えである別の方法は、ajax 呼び出しを同期 (async : false) としてマークし、responseText を確認することですが、それではリクエストが完了するまでページがロックされます。

于 2010-03-24T00:47:42.683 に答える
1

サーバー側から json オブジェクトを渡します。これは Javascript によってテキストとして扱われます。を使用してそれをjsonオブジェクトに解析する必要がありますvar myObject = JSON.parse(myJSONtext);

PHPコード

$response = new stdClass();
$response->value = $value;
print_r(json_encode($response));

JS コード

//(in Jeditable callback)
"callback": function( sValue, y ) {
    sValue = JSON.parse(sValue);
    //now you can access sValue.value
}
于 2011-03-31T06:02:21.387 に答える