Ajax调用的响应


response of Ajax Call

我正在使用ajax进行小型表单验证。用户提供一个密钥,当表单提交时,我调用ajax方法validate_key。

我的功能是

function validate_key(){
    $key = $_POST['key'];
    $id = $this->uri->segment(3);
    $query = $this->db->get_where('mc_boxes', array('idmc_boxes' => $id));
    $row = $query->row();
    $download_key = strtolower($row->downloadkey);
    if($download_key == $key){
        return true;
    }
    else{
        return false;
    }
}

JQuery是

$(document).ready(function() {
    $('#submit').click(function() {
        var key = $('#downloadkey').val();
        var dataString = {KEY:key};
        $.ajax({
            url: "/index.php/home/validate_key",
            type: 'POST',
            data: dataString,
            success: function(msg) {
            }
        });
        return false;
    });
});

形式为

<form name="form" method="post"> 
   <input id="downloadkey" name="downloadkey" type="text" />
   <input type="submit" id="submit" name="submit" value="submit"/>
</form>

我检查用户提供的数据库密钥,如果密钥正确,允许用户查看页面,并在会话中设置密钥,如果错误,则发出警报消息并再次呈现表单

我如何检查响应?

感谢

我想您需要echo从您的PHP页面

if($download_key == $key){
        echo "true";
    }
    else{
        echo "false";
    }

然后,在Ajax成功处理程序中,您可以检查回调中的响应。通过调用preventDefault()函数,确保您也在阻止默认操作,这样页面就不会被发布。

$(document).ready(function() {
    $('#submit').click(function(e) {
       e.preventDefault();
        var key = $('#downloadkey').val();
        var dataString = {KEY:key};
        $.ajax({
            url: "/index.php/home/validate_key",
            type: 'POST',
            data: dataString,
            success: function(msg) {
                  if(msg=="true") 
                    {
                       alert("do something")
                    }
                    else
                    {
                       alert("do something else")
                    }                        
            }
        });           
    });
});

您需要向页面输出一些内容。如果只使用return truereturn false,则不会有任何输出。

所以做一些类似的事情:

echo "OK"

然后您可以在javascript:中执行此操作

if(msg == "OK"){ .. }

您可以做的另一件事是返回HTTP状态代码,例如

header("HTTP/1.1 200 OK");

您可以在jquery中检查此项。然而,使用第一种方法更有用,因为页面上可以有任意数量的输出,包括不同的错误消息等等。