Ajax Call的响应

时间:2012-08-06 13:53:48

标签: php codeigniter jquery

我正在使用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>

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

如何查看回复?

由于

2 个答案:

答案 0 :(得分:3)

我猜您需要从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")
                    }                        

            }
        });           
    });
});

答案 1 :(得分:0)

您需要向页面输出内容。如果您只是return truereturn false,则无法输出任何内容。

做类似的事情:

echo "OK"

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

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

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

header("HTTP/1.1 200 OK");

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