的Ajax:
$.ajax({
url: 'process.php',
type: 'post',
data: 'loginName=' + $("#loginName").val() + 'loginPass=' + $("#loginPass").val(),
dataType: 'json',
success: function(data){
if(data.success)
{
location.href = data.redirect;
}
else
{
alert(data.message);
}
}
});
这是process.php代码:
<?
$data = array();
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if($_POST['loginName'] == "test" && $_POST['loginPass'] == "test")
{
$data['redirect'] = "home.php";
$data['success'] = true;
echo json_encode($data);
}
else
{
$data['message'] = "<div id=Message>Your info is wrong...</div>";
$data['success'] = false;
echo json_encode($data);
}
}
?>
抱歉,我来自捷克共和国,我不会说英语:D
答案 0 :(得分:1)
您的data:
在&
之前错过loginPass=
,这会导致请求出现乱码。但也许你应该在那里给jQuery一个数据对象(它负责正确的url编码):
type: 'POST',
data: {loginName: $("#loginName").val(), loginPass: $("#loginPass").val()},
第二个问题可能是php脚本中缺少内容类型。在顶部添加以下内容(只是为了确保这不是结果被忽略的原因):
<?php
header("Content-Type: application/json");
另一件事:if
语句中需要更多大括号,因为&&
的优先级高于==
比较:
if(($_POST['loginName'] == "test") && ($_POST['loginPass'] == "test")) {
由于它似乎是一个PHP错误,你必须打开php.ini中的error_reporting(E_ALL)和display_errors;如果您仍未从网址返回任何内容,请在顶部添加print 'test123';
。和/或删除REQUEST_METHOD的测试(无论如何都不会增加安全性)。