【问题标题】:how to know whether php file handling the ajax request or not如何知道php文件是否处理ajax请求
【发布时间】:2013-07-13 05:29:21
【问题描述】:

我有这个代码 sn-p 用于ajax 请求:

<script type="text/javascript">
        $(document).ready(function() {
            $('#temp').click(function() {
                var username = $('#un').val();
                $.ajax({
                    url: "inter.php",
                    data: 'user=' + username,
                    cache: false,
                    type: 'GET',
                    success: function(data, textStatus, jqXHR) {
                        if (! data.length === 0) {

                            $('#msg').append('available');
                            $('#sub').removeAttr('disabled');
                        } else {

                            $('#msg').append("Username not available");
                            $('#sub').attr('disabled', 'true');
                        }
                    }
                });
            });
        });
    </script>

以及inter.php中的代码

<?php

$arr = array('one', 'two', 'three');
if (in_array($_GET['user'], $arr)) {
    echo "Username available";
} else {
    //echo "0";
}
?>

但是,每次我收到 Username not available 的消息时。
有人可以帮忙吗?我是ajax 的新手。

编辑
$_GET['用户']
但同样的问题仍然存在。

【问题讨论】:

  • 您在user 中传递数据,同时通过$_GET['un'] 获取数据。
  • 我如何检查我的请求是否被正确处理?我在脚本中使用了data.length === 0 进行检查。还有其他方法吗?
  • 您可以使用与成功相同的error 函数,如果在ajax 请求调用中出现任何错误,则会调用该函数,但是如果您获取数据或未获取数据,那么您的操作方式似乎很好。顺便说一句,您在哪里写过 Username not available ?我们在您发布的代码中找不到。

标签: php jquery ajax


【解决方案1】:

为了调试我添加的代码行:

alert(data + " " + data.length);

之后

success: function(data, textStatus, jqXHR) {

发现我从我的 php 文件中得到了正确的消息。
然后我发现问题出在我的处理程序上

if(!data.length === 0){

! 运算符仅在 data.length 上工作,我是否需要它来进行整个比较。
我把它改成

if(!(data.length === 0)){

现在它可以工作了。

【讨论】:

    【解决方案2】:

    您正在发送?user=someName,但正在寻找$_GET['un']。改成$_GET['user']

    【讨论】:

    • 我更改了$_GET['user'],但我仍然收到Username not available
    • 您确定用户名正确吗?使用 Firebug 跟踪网络流量。这将告诉您哪些数据正在发送到您的服务器,以及响应是什么。这应该可以帮助您调试。
    【解决方案3】:

    问题:

    data: 'user=' + username,
    $_GET['un']
    

    您没有为“用户名”或其他任何内容使用相同的参数名称。在 JS 中你称它为“用户”,在 PHP 中你正在寻找“un”。

    【讨论】:

    • 您需要记录和调试您的 AJAX 和 PHP,因为有几个点可能会发生错误 - 如果没有信息,您将不会知道。尝试输入一些 console.log() 来验证 AJAX 响应和一些登录您的 PHP。 stackoverflow.com/questions/4323411/php-write-to-console
    • 感谢您帮助我。问题出在if(!data.length === 0)
    猜你喜欢
    • 2010-12-21
    • 2017-06-16
    • 2014-05-06
    • 2013-05-08
    • 2011-04-21
    • 2012-04-15
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    相关资源
    最近更新 更多