我一直在尝试获取 javascript 来检查用户是否存在于 MySQL 数据库中。
为此,我使用 jQuery 将用户详细信息发布到检查 MySQL 数据库的 PHP 脚本中。
jQuery POST 成功地将数据传递给 PHP 脚本。我已经检查过了:
- 通过让 PHP 脚本向我发送电子邮件,告诉我它已经获得了数据。
- 通过使用 Firebug 跟踪调用
- 通过使用 Wireshark 跟踪数据包交换
但是,jQuery 坚信每次从 PHP 脚本获得响应时,状态都是 0。
在 firebug 跟踪和 wireshark 跟踪中,来自 PHP 脚本的 HTML 响应中的状态始终为“200 OK”。
我尝试了许多想法(很多遇到类似问题的人建议),比如强制编码为 json 并将 jQuery POST 调用中的数据类型设置为“json”,比如在PHP 脚本,例如使用 GET 而不是 POST。
我已经将我的 HTML、javascript 和 PHP 简化到了最低限度,但我仍然无法让 jQuery 确定响应的状态不是 0。
我现在得到的:
HTML 代码:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<SCRIPT SRC="Templates/nop_shopping_cart/jquery-1.7.2.js"></SCRIPT>
<script type="text/javascript">
function checkUser()
{
alert("clicked");
jQuery.post( 'http://solfacats.com/dsadmin/valUser2.php', {email: "test", password: "test"}, function(data) { alert("returned"+data)}, "html" );
}
</SCRIPT>
<body>
<button onclick="Javascript: checkUser();"> "test" </button>
</body>
</html>
PHP代码:
<?php
echo "test";
?>
注意 - 为了跟踪正在发生的事情,我在 jquery-1.7.2.js 的 done() 函数中使用了对 alert() 的调用。其中一个警报会弹出传递给 done() 的变量状态的值。这始终显示变量状态的值为零。
另外,请注意 - 如果我通过在该函数的早期添加行“status = 200”来破解 done() 函数,则调用 jQuery.post 中的回调函数,但它认为传递的数据变量的值它是空的。
我已经在 IE、Firefox 和 Safari 上尝试过这个,并且在它们上都遇到了同样的问题。
有没有人有一些关于我应该从这里去哪里让 jQuery 看到 PHP 响应成功并成功地从响应中提取数据的一些好的指示?