#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 — предполагая, что вы знаете, как это будет выглядеть, это всегда проблема.