Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript WordPressAjax和额外的php脚本_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript WordPressAjax和额外的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(

我有一个简单的表格,我正在为我的wordpress网站建立,我似乎无法找出我做错了什么。我使用ajax从generic function.php脚本(我称之为wpplugin.php)调用一个单独的php脚本来处理我的所有表单数据,但我似乎无法确定我的javascript文件或ajax的url是否没有触发

我有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;
        }
    });
}));
我将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脚本以匹配它。