2

假设我有这样的表格(取自一本关于 jquery 的书):

<body>
<form>
<label>Enter your Name</label>
<input type="text" name="uname" class="uname"/> <br/>
<input type="submit" id="submit"/>
</form>
<div id="message"></div>
</body>

和这样的ajax函数:

$(document).ready(function() {
   $('#submit').click(function () {
   var name = $('.uname').val();
   var data = 'uname=' + name;
      $.ajax({
         type:"POST",
         url:"welcome.php",
         data: data,
         success: function (html) {
            $('#message').html(html);
         }
      });
      return false;
   });
});

脚本文件如下所示:

<?php
$name = $_POST['uname'];
echo "Welcome ". $name;
?>

它会起作用,但这是我无法理解的。如果welcome.php 脚本从POST 数组中获取$name 的值,为什么它需要通过ajax 请求将数据发送给它?POST 数组肯定已经包含该信息?

另外,我的理解是,ajax 请求是键/值对的形式,但数据以 uname=name 的形式发送,但键/值对通常没有等号。

这里发生了什么 - 它有效,但对我来说没有意义,我讨厌只是在我死记硬背中学习的代码中打孔。

4

2 回答 2

2

jQuery AJAX 异步工作。表单没有被发布,因为您可以看到它没有在表单标签上设置操作或方法属性。

jQuery 拦截按钮单击并设置一个新的异步请求,然后将数据添加到该请求并将其发布到服务器。

于 2013-04-14T22:09:06.423 回答
0

问题在于您的代码
var data = 'uname=' + name;
使用
var data = '{uname:' + name + '}';
因为它是一个 post 方法

于 2013-04-15T12:37:40.943 回答