jQuery帖子无法在php中获得$ _POST

时间:2012-08-04 18:45:29

标签: php jquery ajax wordpress post

我有一个包含onkeyup事件的表单。 我尝试将变量发送到我的php脚本并在div中显示结果。

感谢这个论坛,我将我的测试功能完成了一半:

jQuery.post(the_ajax_script.ajaxurl,

如果我继续: 1)jQuery("#theForm").serialize(), 我得到的响应文本是“Hello World” 如果我尝试传递变量: 2){ name: "p" }, 我得到:-1

的JavaScript

function submit_me(){
jQuery.post(
    the_ajax_script.ajaxurl, 
    { name: "p" },
function(response_from_the_action_function){
    jQuery("#txtHint").html(response_from_the_action_function);
    }
);
}

PHP

<?php
function the_action_function(){
$name = $_POST['name'];
echo "Hello World, " . $name;
die();
}
?>

FORM

<form id="theForm">
 <input type="text" name="user">
 <input name="action" type="hidden" value="the_ajax_hook">
 <input id="submit_button" value = "Click This" type="button" onkeyup="submit_me()">
<form>

我其实想要onkeyup="submit_me(this.value, 0)" 我通过他们的admin-ajax.php文件在WordPress上这样做。

这个问题在哪里?

修改

显然我必须为数据添加动作

{ action:'the_ajax_hook', name:"p" }

我猜它的WP要求,而不是jQuery,因为我看到了这样的例子:

$.post("test.php", { name: "John", time: "2pm" }

随处可见。

1 个答案:

答案 0 :(得分:0)

这样的事情应该有效:

<html>
    <head>
        <script>
            $(document).ready(function() {
                $("#my_form").submit(function(event) {
                    event.preventDefault() // to prevent natural form submit action
                    $.post(
                        "processing.php",
                        { name: "p" },
                        function(data) {
                             var response = jQuery.parseJSON(data);
                             $("#txtHint").html(response.hello_world);
                        }
                    );
                });
            });
        </script>
    </head>
    <body>
        <form id="my_form" action="/" method="post">
            <input type="text" name="user" />
            <input name="action" type="hidden" value="the_ajax_hook" />
            <input type="button" name="submit" value = "Click This" />
        </form>
        <div id="txtHint"></div>
    </body>
</html>

然后在processing.php:

<?php
    $name = $_POST['name'];
    $response['hello_world'] = "Hello World, " . $name;
    echo json_encode($response);
?>