【问题标题】:JSON error with PHP/JqueryPHP/Jquery 的 JSON 错误
【发布时间】:2011-10-05 13:21:12
【问题描述】:

我不知道我是怎么做到的, 但是,如果用户没有任何朋友,我想要的是显示一条错误消息。要求他们添加一些朋友。

此代码的 PHP 部分在第一个 mysql 中找不到任何结果时返回 [false] 而不是错误消息。

这是我的 jquery 代码

function fetchfriends(){
$.getJSON('sys/classes/core.php?task=fetchfriends&userid='+sessionparts[1], function(data) {



$.each(data, function(key, val) {
    if(val.error)
    {
    $('<div class="myfriendsbar">'+val.error+'</div>').appendTo('#mycontacts');
    return false;
    }
    else
    {

    $('<div class="myfriendsbar"><div id="friendsimage'+val.to_userid+'" style="width:32px; height:32px; float:left; margin:3px;"></div>'+val.firstname+' '+val.lastname+'<br/>'+val.username+'</div>').appendTo('#mycontacts');

    $('#friendsimage'+val.to_userid).css("background-image", "url(http://bonush.com/beta/sys/classes/photofetch.php?pic="+val.to_userid+":9177156176671)"); 

    }
  });


    });

这是 PHP 代码

$number_check = mysql_query("SELECT * FROM user_contact WHERE from_userid = '{$this->userid}'");

    if(!mysql_num_rows($number_check))
    {

            $arr = array('error' => "No Friends?<br/>Search above for New users or invite some friends.");
            print json_encode($arr);
    }
    else
    {
            $friendlook = mysql_query("%PRIVATECODE%");

            $row = mysql_fetch_assoc($friendlook);
            $rows[] = $row;
            print json_encode($rows);
    }

【问题讨论】:

  • 抛开错误的格式不谈,从根本上讲,您甚至没有说明错误是什么而失败了。
  • 错误是他们在我们的网站上没有朋友。我们希望他们邀请新用户
  • 没有朋友是怎么回事?对我来说,这是人生的选择。
  • 您刚刚开始做某事,遇到困难,并要求有人看看您可以改进的地方?帮不上忙,因为我不是 php 神,但如果您提供更多关于哪里出了问题、什么有效以及在哪里遇到问题的信息会有所帮助
  • @Russel 好吧,如果您可以在评论中输入,那么您肯定可以在问题中输入吗?

标签: php jquery mysql json


【解决方案1】:

在我看来,如果出现错误,您不需要在返回数据上使用 each,首先检查错误,然后如果它不可用,则在其上运行 each 以打印朋友...

function fetchfriends(){
$.getJSON('sys/classes/core.php?task=fetchfriends&userid='+sessionparts[1], function(data) {
    if(data.error)
    {
        // your data is an array of friends, unless you have an error, then it is no array, so no need for the each to print the error.
        $('<div class="myfriendsbar">'+data.error+'</div>').appendTo('#mycontacts');
        return false;
    }
    else
    {
        //only when data.error does not exist it is filled as an array of friends you return i presume... 
        $.each(data, function(key, val) {
            $('<div class="myfriendsbar"><div id="friendsimage'+val.to_userid+'" style="width:32px; height:32px; float:left; margin:3px;"></div>'+val.firstname+' '+val.lastname+'<br/>'+val.username+'</div>').appendTo('#mycontacts');
            $('#friendsimage'+val.to_userid).css("background-image", "url(http://bonush.com/beta/sys/classes/photofetch.php?pic="+val.to_userid+":9177156176671)"); 
        });
    }
});

【讨论】:

    【解决方案2】:

    在“错误”状态下,JSON 结果将如下所示:

    {
      "error": "No friends? ... etc."
    }
    

    因此,当您执行$data.each 时,您将获得一次迭代,其中key"error"val"No friends? ..." 等等。所以,当您执行val.error 时,您正在访问error字符串的属性,不存在。

    【讨论】:

    • @RussellHarrower 嗯,这应该是问题中的一些有用信息。问题是关于 PHP,而不是 jQuery。
    • 抱歉,我是在写完这个问题后才发现的。
    • 调试 JSON 时要做的第一件事是查看 JSON - 假设您知道它的外观总是一个问题。
    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 2018-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2019-01-28
    • 1970-01-01
    相关资源
    最近更新 更多