jQuery POST Ajax request

jQuery POST Ajax request

本文关键字:request Ajax POST jQuery      更新时间:2023-09-26

我正在尝试从服务器 A 发布数据,假设:www.a.com 服务器 B www.b.com,然后从服务器 B 获取响应

我是这样做的,这个脚本在服务器 A 上运行:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>    
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Naamloos document</title>
</head>
<body>
<form id="Form" onsubmit="validate();" method="post">
Email Address: <input type="text" id="email" name="email">
Password: <input type="text" id="password" name="password">
<input type="submit">
 </form>
<script>
function validate()
{
var e = $('email').value;
var p = $('password').value; //jQuery is easier to type
// the same as
// var p = document.getElementById('password').value;
var req = new Request({
    url: 'http://www.B.com/validate.php?',
    method: 'post',
    data: {'email' : e, 'password' : p},
    onComplete: function(response)
    {
        if (response == "Valid" ) 
        {
            alert("succes");
        }
        else
        {
            alert("blur");
        }
    }
}).send();
}
</script>
</body>
</html>

但是此时此刻,点击提交按钮后,唯一发生的事情就是字段被清除,仅此而已。

验证.php如下所示:

<?php echo "Valid"; ?>

你正在提交表单,所以JavaScript从来没有机会做任何重要的事情。由于您尚未指定action,它将提交到当前 URL 并重新加载页面。

  1. 停止使用内部事件属性。
  2. 使用
  3. JS 事件绑定(既然你已经在使用 jQuery,请继续使用它)
  4. 捕获事件对象并阻止提交事件的默认行为

这样:

<form id="Form" method="post">
$('#Form').on('submit', validate);
function validate (event) {
    event.preventDefault();
    var e = $('#email').val();

您似乎也没有在任何地方定义Request。你可能应该切换到jQuery ajax


另请注意,服务器 B 必须授予服务器 A 使用 CORS 向其发出 Ajax 请求的权限。

尝试替换这个

var e = $('email').value;
var p = $('password').value;

有了这个

var e = $('#email').val();
var p = $('#password').val();