2012-08-04 114 views
0

我有一个带有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)" 我通过自己的管理-ajax.php文件一个WordPress这样做。

问题在哪里?

编辑

显然,我不得不添加行动数据

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

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

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

无处不在。

+0

为什么你死()在你的PHP脚本的结束? – jrubins 2012-08-04 19:04:27

+0

另外,你不需要PHP代码中的函数。 PHP脚本运行时可能不会被调用。 – jrubins 2012-08-04 19:05:36

回答

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); 
?>