Ошибка JSON с PHP / Jquery

#php #jquery #mysql #json

#php #jquery #mysql #json

Вопрос:

Я не уверен, как я это делаю, но, по сути, я хочу показать сообщение об ошибке, если у пользователя нет друзей. прошу их добавить друзей.

PHP-часть этого кода возвращает [false] вместо сообщения об ошибке, когда он не может найти какие-либо результаты в первом mysql.

Вот мой код jquery

 function fetchfriends(){
$.getJSON('sys/classes/core.php?task=fetchfriendsamp;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);
    }
  

Комментарии:

1. Помимо неправильного форматирования, вы терпите неудачу в фундаментальном смысле, даже не указав, в чем заключается ошибка.

2. Ошибка в том, что у них нет друзей на нашем сайте. мы хотим, чтобы они приглашали новых пользователей

3. Как отсутствие друзей является ошибкой? Для меня это жизненный выбор.

4. вы только что начали что-то, застряли и просите кого-нибудь взглянуть на то, где вы могли бы улучшить? не могу помочь, так как я не бог php, но было бы полезно, если бы вы предоставили больше информации о том, что идет не так, что работает и где вы сталкиваетесь с проблемами

5. @Russel Ну, если вы можете ввести это в комментарии, вы, конечно, можете ввести это в вопросе?

Ответ №1:

на мой взгляд, вам не нужен each в ваших возвращаемых данных, если есть ошибка, сначала проверьте наличие ошибки, а затем, если она недоступна, запустите each для печати друзей…

 function fetchfriends(){
$.getJSON('sys/classes/core.php?task=fetchfriendsamp;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 свойству строки, которая не существует.

Комментарии:

1. @RussellHarrower Ну, это некоторая полезная информация, которая должна быть в вопросе. Вопрос касается PHP, а не jQuery.

2. Извините, я только что узнал об этом, после того, как написал эти вопросы.

3. Первое, что нужно сделать при отладке JSON, это просмотреть JSON — предполагая, что вы знаете, как это будет выглядеть, это всегда проблема.