Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.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 http400来自WordPress的AJAX代码的错误请求_Javascript_Php_Ajax_Wordpress - Fatal编程技术网

Javascript http400来自WordPress的AJAX代码的错误请求

Javascript http400来自WordPress的AJAX代码的错误请求,javascript,php,ajax,wordpress,Javascript,Php,Ajax,Wordpress,我是网站开发新手,正在开发WordPress网站。尽管与其他问题类似,该问题并没有使用jQuery.AJAX,而是使用请求类型为“category”的jQuery.post。我在尝试使用AJAX时遇到了一些语法问题。我已经创建了一个简单的插件来输入一个名字,将它发送到服务器,并让它回显。以下是php文件my-ajax-test.php: add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' ); function ajax_t

我是网站开发新手,正在开发WordPress网站。尽管与其他问题类似,该问题并没有使用jQuery.AJAX,而是使用请求类型为“category”的jQuery.post。我在尝试使用AJAX时遇到了一些语法问题。我已经创建了一个简单的插件来输入一个名字,将它发送到服务器,并让它回显。以下是php文件my-ajax-test.php:

add_action( 'wp_enqueue_scripts', 'ajax_test_enqueue_scripts' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( 'my-script-handler', plugins_url( '/my-ajax-test.js', __FILE__ ), array('jquery'), '1.0', true );
    wp_localize_script( 'my-script-handler', 'ajax_test', array(
        'ajax_url' => admin_url( 'admin-ajax.php' )
    ));
}
function my_ajax_test() {
/**** Create Input Form ****************************/
?>
    <h2>Select Persons You Wish to Register</h2>

    <form action="">
    <input type="text" id="ajax_guest_name" name="guest_name">
    <p id="ajax_guest_text">Enter Guest Name</p>
    <br><br>
    <input type="button" id="ajax_rsvp" name="ajax_guest" value="Register Guest">
    </form> 

<?php   
add_action( 'wp_ajax_my_ajax_callback', 'my_ajax_callback' );

function my_ajax_callback() {
    $guest_name = $_POST[ajax_guest_name];
    echo $guest_name;
    die();
}
};

add_shortcode('My-AJAX-Test', 'my_ajax_test');
看起来一切正常,但单击按钮不会向服务器发送任何内容。控制台日志有一个错误:

HTTP400:错误的请求-由于无效语法,服务器无法处理该请求。 (XHR)职位-


我不断地检查代码,看看有什么错误,但找不到。任何建议都将不胜感激。

操作
我的ajax测试
不是您需要作为操作参数传递的

替换:

action: 'my-ajax-test',
与:


你好,LCSF,欢迎来到StackOverflow

您的代码中有多个错误。您正在将数据发布到
我的ajax测试
函数(该函数不存在。您的主要插件函数是
我的ajax测试
),而您应该做的是将数据发布到
我的ajax\回调
函数。这是您通过wp_ajax操作挂钩注册的函数。这就是为什么Wordpress找不到你的行动。除此之外,回调函数封装在主插件函数中,这就是为什么即使更改Ajax请求,由于其作用域的原因也找不到该函数。要解决此问题,请执行以下操作:

  • 在JavaScript文件中,将Ajax函数中的
    操作更改为
    my\u Ajax\u回调
  • my\u ajax\u test
    函数中提取
    my\u ajax\u回调
    函数。然后,您的代码结构将如下所示:

    // use wordpresses version of script
    var $jq = jQuery.noConflict();
    
    $jq(document).ready(function(){ 
    
    $jq("#ajax_rsvp").click(function(){
    /* Send guest name to server via AJAX */
    
        var g_name = document.getElementById("ajax_guest_name").value;
        alert("RSVP Button was clicked with Guest Name: " + g_name);
    
    $jq.ajax({
        url : ajax_test.ajax_url,
        type : 'post',
        data : {
            action: 'my-ajax-test',
            ajax_guest_name : g_name
        },
        success:function(data) {
            // This outputs the result of the ajax request
            console.log(data);
        },
        error: function(errorThrown){
            console.log(errorThrown);
        }
    }); // End of AJAX function
    
    }); // End of button click function
    
    }); // End of Main Document Ready Function
    
    function my_ajax_test(){ 
        //content 
    }
    
    add_action( 'wp_ajax_my_ajax_callback', 'my_ajax_callback' );
    
    function my_ajax_callback(){
        //content
    }
    
  • 可能重复的
    function my_ajax_test(){ 
        //content 
    }
    
    add_action( 'wp_ajax_my_ajax_callback', 'my_ajax_callback' );
    
    function my_ajax_callback(){
        //content
    }