2016-11-08 54 views
1

我有一個簡單的表單,我正在爲我的wordpress網站建設,我似乎無法弄清楚我做錯了什麼。我正在使用ajax調用通用的function.php腳本(我稱之爲wpplugin.php)單獨的php腳本來處理我所有的表單數據,但我似乎無法弄清楚我的javascript文件或ajax的url是不是觸發。Wordpress ajax和額外的PHP腳本

所以我有3個文件,我有/wpplugin.php和/upload.php /code/upload.js。

要添加的js文件我在wpplugin.php使用此代碼:

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); 
} 

,並從JS腳本我的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腳本HTML塊與wpplugin.php像這樣:

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

飼料從WordPress的背部是如此有限,我不能告訴如果我ajax不觸發或js不被使用。我已經測試了xxamp和通用硬編碼html在線網站中的所有代碼,它的工作原理。

歡迎任何建議。

+0

我錯了,我有幾個。首先它說我的ajax 3.1.0太新了。 – Kbcoder

+0

也說加載資源失敗:服務器響應upload.php的狀態404(未找到)。龔找到一個更老的ajax構建,看看是否有幫助。 – Kbcoder

+0

Atfer修復jquery版本問題,它仍然無法找到我的upload.php,說它嘗試後發佈和我的js腳本失敗後加載失敗。 – Kbcoder

回答

1

腳本加載問題是因爲您在functions.php文件中使用了plugins_url()

從文檔上plugins_url()

獲取的絕對URL的插件或MU-plugins目錄(沒有尾隨斜線),或使用下的$ path參數,以一個特定的文件時該目錄。

來源: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); 

編輯:關於upload.php的

的WordPress已經有一個AJAX的端點爲每個主題和插件的使用內置系統。

端點地址是從admin_url('admin-ajax.php')返回的值,實際上通常是mydomain.com/wp-admin/admin-ajax.php

由於每個主題和插件都使用相同的端點,因此您如何區分來自其他人的呼叫?

您發送的特殊財產叫做action。這是什麼讓WordPress知道誰是擊中admin-ajax.php

其上的所有信息是在這裏:https://codex.wordpress.org/AJAX_in_Plugins

它的將是什麼樣子的快速樣品是這樣的:

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

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'怎麼樣呢?拉動javascript對齊原來的目錄調用是一樣的我的ajax調用呢? – Kbcoder

+0

謝謝你幫了一大堆。非常感謝。 – Kbcoder

+0

嗨我現在得到這個/wp-content/themes/dance/code/upload.js?ver = 1.0 404(Not Found)這似乎是從主題而不是插件鏈接,這是有意義的,因爲這是模板。