2016-11-08 9 views
1

私は簡単なフォームを持っています。私は自分のwordpressサイト用にビルドしています。私が間違っていることを理解しているようです。私はすべてのフォームデータを処理する汎用function.phpスクリプト(私はそれをwpplugin.phpと呼んだ)から別のPHPスクリプトを呼び出すためにアヤックスを使用していますが、私のjavascriptファイルまたはajaxのURLがトリガー。Wordpress ajaxと特別なPHPスクリプト

私は3つのファイルを持っているので、私は/wpplugin.phpと/upload.phpを/code/upload.jsに持っています。私はwpplugin.phpでこのコードを使用するJSファイルを追加するには

次のようにjsのスクリプトから

add_action('wp_enqueue_scripts', 'all_enqueue_scripts'); 
function all_enqueue_scripts() 
{ 
    wp_enqueue_script('uploadjs', plugins_url('/code/upload.js', __FILE__), array('jquery'), '1.0', true); 
} 

と私のAJAXは、次のとおりです。

$("#uploadform").on('submit',(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "upload.php", 
     type: "POST",  
     data: new FormData(this), 
     contentType: false,  
     cache: false,   
     processData:false,  
     success: function(data) 
     { 
      arr = data; 
     } 
    }); 
})); 

私はn個でjsのスクリプトが含まれますwpplugin.phpのあるHTMLブロックそうのように:

<script src="code/upload.js"> 

バックワードプレスからのフィードは、その私の場合、私が言うカントそのように限定されるものですajaxがトリガーしていないか、jsが使用されていません。私はxxampと一般的なハードコードされたhtmlオンラインサイトのすべてのコードをテストしました。

アドバイスをよろしくお願いいたします。

+0

私は間違っていた、私はいくつか持っている。まず、私のアヤックス3.1.0も新しくなったと言います。 – Kbcoder

+0

また、リソースの読み込みに失敗しました:サーバーはupload.phpに対して404(Not Found)のステータスで応答しました。古いAjaxビルドを見つけて、それが最初に役立つかどうかを確認する。 – Kbcoder

+0

Atferがjqueryバージョンの問題を修正していますが、まだupload.phpが見つかりません。ポストを試みた後に読み込みに失敗し、jsスクリプトが失敗してしまいます。 – Kbcoder

答えて

1

ファイルにplugins_url()を使用しているため、スクリプトの読み込みに問題があります。 plugins_url()のドキュメントから

:下の特定のファイルに、$ path引数を使用している場合

は、プラグインや(末尾のスラッシュなし)MU-pluginsディレクトリへの絶対URLを取得しますかそのディレクトリ。

出典:https://codex.wordpress.org/Function_Reference/plugins_url

は、あなたのテーマディレクトリと仮定すると、次のようになります

|- style.css 
|- index.php 
|- functions.php 
|- code 
    |- upload.js 

あなたはあなたのfunctions.phpファイルを編集して置換されてやりたい:

wp_enqueue_script('uploadjs', plugins_url('/code/upload.js', __FILE__), array('jquery'), '1.0', true); 

wp_enqueue_script('uploadjs', get_template_directory() . '/code/upload.js', array('jquery'), '1.0', true); 

EDIT:約upload.php

WordPressはすでに、すべてのテーマと、使用するプラグインのための単一のAJAXエンドポイントの組み込みシステムを持っています。

エンドポイントアドレスはadmin_url('admin-ajax.php')からの戻り値ですが、実際には実際にはmydomain.com/wp-admin/admin-ajax.phpになります。

すべてのテーマとプラグインが同じエンドポイントを使用しているため、どのようにして他の人と電話を区別していますか?

actionと呼ばれる特別なプロパティがあります。それはWordPressに誰がadmin-ajax.phpに当っているかを知らせるものです。

その上のすべての情報はこちらです:

JS

$("#uploadform").on('submit',(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "wp-admin/admin-ajax.php?action=akamaozu_do_frontend_upload", 
     type: "POST",  
     data: new FormData(this) 
    }); 
})); 

のfunctions.php

https://codex.wordpress.org/AJAX_in_Plugins

それがどのように見えるかの迅速なサンプルがこれです

add_action('wp_ajax_akamaozu_do_frontend_upload', 'handle_signed_in_uploads'); 
add_action('wp_ajax_nopriv_akamaozu_do_frontend_upload', 'handle_signed_out_uploads'); 
+1

私のajax関数の 'upload.php'はどうですか?私のAJAX呼び出しと同じになるように元のディレクトリ呼び出しを整列させてjavascriptをプルしますか? – Kbcoder

+0

おかげで助けになりました。ありがとうございました – Kbcoder

+0

こんにちは私はこれを手に入れました/wp-content/themes/dance/code/upload.js?ver = 1.0 404(見つからない)それはテンプレートではないので、プラグインではなくテーマからリンクを引っ張っているようだ。

関連する問題