1

私は JQuery に手を出していますが、まだ理解できない問題に遭遇しました。コンテキストは次のとおりです。

CMS 投稿の編集に使用する、MySQL と PHP を利用した HTML フォームがあります。この投稿には、添付ファイルのリストが含まれます (ギャラリーの画像やダウンロード可能なファイルなど)。JQuery を使用すると、ユーザーはこれらのリスト項目要素をクリックして、表示された div 内の各添付ファイルの詳細を編集できます (例: 画像の削除、キャプトンの追加など)。

現在、ユーザーが添付ファイルの削除を選択した場合、その不透明度をフェードし、削除を「元に戻す」ための新しいオプションをユーザーに提供します。完全な親フォーム (CMS 投稿) を送信したら、まだ削除対象としてマークされているすべての添付ファイルを収集し、残りのすべての投稿更新を行っている PHP スクリプトにそれらの GUID を送信します。

オプション A:

フォーム入力によってアクション スクリプトに自然に送信されるデータと一緒に、JQuery 配列を PHP スクリプトに送信することは可能ですか?

オプション B:

JQuery を使用して (非表示の) フォーム入力配列を動的に入力/空にすることは可能ですか?その後、他のすべてのアクション スクリプトに自然に送信できますか?

現在、Javascript 配列に必要な GUID を入力している段階ですが、どうすればよいかわかりません。

//populate deleted attachments array
$(document).ready(function() {
  $('#post-editor').submit(function() {
    var arrDeleted = [];    
    $('.deleted-att').each(function(){
      arrDeleted.push({guid: $(this).attr("data-guid")});
    });
    //do something with array
  });
});
4

4 に答える 4

2

JSON.stringifyarrDeleted送信されるフォームの非表示フィールドにそれらを配置します。

$('#post-editor').submit(function() {
    var arrDeleted = [];    
    $('.deleted-att').each(function(){
        arrDeleted.push({guid: $(this).attr("data-guid")});
    });
    $('#post-hidden').val(JSON.stringify(arrDeleted));
});

あなたのhtmlのどこかに:

<form id="post-editor">
    <input type="hidden" id="post-hidden" name="post-hidden" />
    <!-- ... other fields ... -->
 </form>

次にjson_decode($_POST['post-hidden'])、サーバー上で配列を取得します。

于 2013-01-16T13:41:06.837 に答える
1

フォームに隠しフィールドを作成します..jqueryarrDeletedを介して入力に値を入力し、フォームjson_decode()を投稿します..投稿された値を取得するために使用します...

<input  type="hidden" id="hidden"/>

Jクエリ

$(document).ready(function() {
   $('#post-editor').submit(function() {
   var arrDeleted = [];    
   $('.deleted-att').each(function(){
    arrDeleted.push({guid: $(this).attr("data-guid")});
  });
   $('#hidden').val(JSON.stringify(arrDeleted));
 });
});
于 2013-01-16T13:43:11.990 に答える
1

あなたが望むことをする最も簡単な方法は、非表示の入力フィールドを HTML フォームに追加することです。

次に、jQueryで次のようにします

$('form').submit(function() {
    $('#hidden_id_field').val( arrDeleted.join(',') );
});

この場合の arrDeleted は、既にセットアップしたアレイです。コンマ区切りのリストを送信し、PHP で値を分割して、必要に応じて動作します。

通常、私は AJAX を実行し、JSON をアプリに送信します。しかし、本当にそのようにしたい場合は、上記のアプローチが機能します。また、フォームを送信するまで、実際にはサーバー上の何も削除されないという利点があります。

于 2013-01-16T13:45:07.150 に答える
0

従来のフォームの送信と更新でこれを行うことを検討しているかもしれませんが、リクエストを非同期で送信する場合は、jQuery を使用してフォームを送信し、削除されたアイテムの配列をシリアル化できます。

var form = $('#post-editor');
form.submit(function() {
  var arrDeleted = [];    
  $('.deleted-att').each(function(){
    arrDeleted.push({ // The format $.serializeArray produces.
      name: "deleted",
      value: $(this).attr("data-guid")
    });
  });

  var formData = form.serializeArray();
  // Add values to existing form data
  formData = formData.concat(arrDeleted);

  $.ajax({
    url: form.attr('action'),
    data: formData
    // Other ajax options
  });
});

PHP 側では、 を参照する$_REQUEST['deleted']と GUID の配列が返されます。

于 2013-01-16T13:58:23.287 に答える