0

我正在为 wordpress 编写一个插件,我在其中使用 jquery 进行 AJAX。

以下代码不起作用。我希望在输入框中键入时在结果 div 中显示内容。

这是我用于 ajax 请求的代码。它位于我的主题头文件中。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>


<script type="text/javascript" >
$(document).ready(function(){
//alert("sjsjs");

    $("#se").keypress(function(e){
       // e.preventDefault();
        var search_val=$("#se").val(); 
        $.ajax({
            type:"POST",
            url: "./wp-admin/admin-ajax.php",
            data: {
                action:'wpay_search', 
                search_string:search_val
            },
            success:function(data){
                $('#results').append(response);
            }
    });   
});
});
</script>

模板文件中的html内容

<form name="nn" action="" method="post"></br></br>
            <input id ="se" type="text" name="test" width="20" />
            <input type="submit" id="clicksubmit" value="Submit" />

        </form>
        <div id="results">val is: 


        </div>

这是插件文件中的代码

function wpay_search() {
    //global $wpdb; // this is how you get access to the database

    $whatever = $_POST['search_val'];

    $whatever += 10;

        echo $whatever;

    die(); // this is required to return a proper result
}

add_action('wp_ajax_wpay_search', 'wpay_search');
add_action('wp_ajax_nopriv_wpay_search', 'wpay_search');

我是 wordpress 插件写作的新手。谁能告诉我在哪里做错了?

4

1 回答 1

2

好吧,显然让我跳出来的一件事是……

        success:function(data){
            $('#results').append(response);
        }

应该...

        success:function(data){
            $('#results').append(data);
        }

因为您没有调用变量,所以您response将函数data作为变量传递,因此您必须使用它。

此外,您search_string作为参数传递,当实际上在您的 php 文件中时,$_POST正在寻找search_val.

因此,您需要search_val作为参数发送并在 JavaScript 中为您的 JavaScriptsearch_val变量指定另一个变量名,以减少混淆。在这种情况下,我做到了search

                action:'wpay_search', 
                search_val:search

所以总的来说它应该看起来像这样......

$("#se").keypress(function(e){
   e.preventDefault();
    var search=$("#se").val(); 
    $.ajax({
        type:"POST",
        url: "./wp-admin/admin-ajax.php",
        data: {
            action:'wpay_search', 
            search_val:search
        },
        success:function(data){
            $('#results').append(data);
        }
    });   
  });
于 2013-06-23T08:48:16.177 回答