我需要这个脚本的帮助($ .ajax())

时间:2011-02-13 00:30:42

标签: php javascript ajax

的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

1 个答案:

答案 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的测试(无论如何都不会增加安全性)。