web-dev-qa-db-ja.com

Async-upload.phpのajaxレスポンスからIDを取得する

そのワードプレス+ jQueryの質問です。私はそれがワードプレスの知識も含むと信じているのでそれをstackoverflowに投稿することはできません。

達成しようとしていること: "add post"ページのメタボックスにwordpress async media uploaderを付けて、ユーザーがそれらをアップローダにドラッグアンドドロップするだけでアップロードできるようにします。一度に1つずつ挿入する必要はありません(画像を参照)。

image uploader

ユーザーが1つの画像を複数の投稿に添付できるように、添付IDを投稿メタに保存しています。

質問:アップロード者がアップロード要求をasync-upload.phpに送信すると、タイトル、キャプション、添付ファイルの説明を追加するためのフォーム全体を含むHTML応答が返送されます。応答の最初のものはこれです。

<input type='hidden' id='type-of-106' value='image' />

ここで完全な回答 を見ることができます

私の質問は、どのようにそのHTMLレスポンスから添付ファイルIDを取得するのですか?私はasync-upload.phpから来るすべてのajaxレスポンスをリッスンしなければならないと思っています。

2
Sisir

私はできましたが、たとえそれがオープンソースコードであったとしても、私は本当にここに他人の作品を投稿したくありません。

Rilwis Meta Box Classにはカスタムアップロードハンドラを持つpluploadフィールドがあります。ご覧になりたい場合は、 https://github.com/rilwis/meta-box をご覧ください。

resp: https://github.com/rilwis/meta-box/blob/master/inc/fields/plupload-image.php#L31

答えはそこにあります。このコード、あるいは少なくともアイデアは、あなたがレスポンスをもっとコントロールすることを可能にします。

1
ungestaltbar

返答の種類を指定できますか。ここではHTMLよりもJSONを使用することをお勧めします。そうでなければ、IDを取得するための「信頼できる」方法があるかどうかはわかりませんが、それを見つけるためにjQueryを使用することができます。これがAjaxリクエストの成功関数に入れる例です。

success: function(html){
    var item_info = $(html).find('.media-item-info').attr('id');
    var info_array = item_info.split('-');
    var attach_id = info_array[2];
}

繰り返しますが、 '.media-item-info'が毎回存在すると想定しているため、これが最も信頼性の高い方法であるとは言いませんが、コードの全体像がわからないため、これが重要です。私は行きます。

0
Thomas