Javascript WordPressAjax和额外的php脚本
我有一个简单的表格,我正在为我的wordpress网站建立,我似乎无法找出我做错了什么。我使用ajax从generic function.php脚本(我称之为wpplugin.php)调用一个单独的php脚本来处理我的所有表单数据,但我似乎无法确定我的javascript文件或ajax的url是否没有触发 我有3个文件,分别是/wpplugin.php和/upload.php以及/code/upload.js 要添加js文件,我在wpplugin.php中使用以下代码:Javascript WordPressAjax和额外的php脚本,javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我有一个简单的表格,我正在为我的wordpress网站建立,我似乎无法找出我做错了什么。我使用ajax从generic function.php脚本(我称之为wpplugin.php)调用一个单独的php脚本来处理我的所有表单数据,但我似乎无法确定我的javascript文件或ajax的url是否没有触发 我有3个文件,分别是/wpplugin.php和/upload.php以及/code/upload.js 要添加js文件,我在wpplugin.php中使用以下代码: add_action(
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;
}
});
}));
我将js脚本包含在n html块中,并包含在wpplugin.php中,如下所示:
<script src="code/upload.js">
wordpress的反馈非常有限,我无法判断是我的ajax没有触发还是js没有被使用。我已经在xxamp和一个通用的硬编码html在线站点中测试了所有代码,它可以工作
欢迎提供任何建议。脚本加载问题是因为您在
functions.php
文件中使用了plugins\u url()
从plugins\u url()
的文档中:
检索插件或mu插件目录的绝对URL(不带尾随斜杠),或者在使用$path参数时,检索该目录下特定文件的绝对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 );
与
编辑:关于upload.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' );
WordPress已经有了一个内置系统,可以为每个主题和插件使用一个ajax端点
端点地址是来自admin\uURL('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
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' );
我错了,我有几个。首先,它说我的ajax 3.1.0太新了,还说加载资源失败:服务器响应upload.php的状态为404(未找到)。Gong想先找到一个较旧的ajax版本,看看是否有帮助。在修复jquery版本问题后,它仍然找不到my upload.php,说它在尝试post后加载失败,我的js脚本获取失败。你在哪里为你的ajax添加wp_ajax函数/操作?我不添加它,它是从我的upload.js脚本运行的。另外,我如何知道我的插件文件所在位置的真实链接?我确实将$(document).ready(function()更改为jQuery(document).ready(function($){对于js脚本中的wp,我的ajax函数中的“upload.php”如何?或者这是否会正确地拉动javascript,使原始目录调用与我的ajax调用保持一致?感谢您的帮助。非常感谢。您好,我现在得到这个/wp content/themes/dance/code/upload.js?ver=1.0 404(未找到)它似乎是从主题而不是插件中提取链接。这是有意义的,因为这是模板。也仍然是从错误的位置提取该函数在这里也可以使用,还是仅限于纯php?@Kbcoder我提到过,如果目录结构看起来像某种方式,那就是你的代码的样子。你需要弄清楚ere
code/upload.js
与主题的function.php
相关,并更新wp\u enqueue\u脚本以匹配它。