Ajax调用的响应

Ajax调用的响应

问题描述:

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

我的功能是

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

你的问题是什么?您在成功功能中检查AJAX响应。 – Utkanos 2012-08-06 13:55:39

+0

@Utkanos是的,它给了我一些我的wamp服务器索引页的html – 2012-08-06 13:57:01

+0

阅读你的框架如何处理AJAX请求的文档。你可能做错了。使用fuelphp时,我必须设置一个单独的REST API来处理ajax,所以也许它与codeigniter一样。 – Matt 2012-08-06 13:57:37

我猜你需要在阿贾克斯成功处理程序,您可以检查在回调响应呼应从PHP页面

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

然后。请确保您通过调用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") 
        }       

      } 
     });   
    }); 
}); 
+0

echo不起作用 – 2012-08-06 14:02:08

+0

当我提交表单时看到我的回应它显示了一些HTML和CSS我无法看到任何真实或错误在我的回应# – 2012-08-06 14:07:56

+0

使用firebuug来查看你打电话给哪个文件。 – Shyju 2012-08-06 14:20:06

您需要输出内容到页面。如果你只是return truereturn false什么都不会输出。

所以做这样的事情:

echo "OK"

然后你就可以在你的JavaScript做到这一点:

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

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

header("HTTP/1.1 200 OK");

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

+0

回声不工作 – 2012-08-06 14:01:50

+0

当我提交表单,看看我的反应也显示了一些HTML和CSS我不能看到任何东西真的还是假的,我响应 – 2012-08-06 14:09:07

+0

一开始你”重新使用codeigniter - 你应该使用'$ this-> input-> post('KEY')'而不是'$ _POST ['KEY']''。你也没有一个URI段3.可以从这个破坏它吗?什么是你看到的HTML输出? – 2012-08-06 14:14:35