大家好,提前感謝您的幫助。
我有一個無限滾動腳本,我在本地主機上開發和作業,但不在我的服務器上。
JS 代碼如下所示:
$('#load-more').on('mouseenter', function() {
$(this).css('cursor', 'pointer');
}).on('click', function slide(event) {
var relData = $.parseJSON($(this).attr('rel'));
$('#loader').html('<img src="design/loader.gif" alt="jQuery Ajax $.parseJSON 適用于本地主機但不適用于服務器" />');
var data = {
displayedSites: relData.displayedSites,
catNum: relData.catNum,
streamPage: relData.streamPage,
numSites: relData.numSites
};
$.ajax({
type: 'POST',
url: 'ajax/infinite-scroll.php',
data: data,
dataType: 'json',
timeout: 3000,
success: function(data) {
$('#sitesstream').fadeOut(100, function() {
$(this).append(data.newSitesSet);
}).fadeIn(1000);
$('#loader').html('');
if (data.moreSitesRel.active != 'off') {
$('#load-more').show();
$('#load-more').attr('rel', '{"displayedSites":"' data.moreSitesRel.displayedSites '", "catNum":"' data.moreSitesRel.catNum '", "streamPage":"' data.moreSitesRel.streamPage '", "numSites":"' data.moreSitesRel.numSites '"}');
} else {
$('#load-more').hide();
}
},
error: function() {
$('#siteStreamInfo').text('Problem');
}
});
return false;
});
它呼叫一個 PHP 檔案來添加更多內容并發送回頁面。
您是否知道缺少什么或我應該添加/更改什么以使其在我的服務器上作業,這是一個 >7 php 版本。我也使用 jQuery 版本 3.5.1
太感謝了。
uj5u.com熱心網友回復:
作為基本的經驗法則,永遠不要手動制作自己的 JSON 字串。
當您將 JSON 設定回rel屬性時,您可能會在回傳的資料中遇到某些內容,從而使您的 JSON 無效。
相反,使用JSON.stringify()
$("#load-more").attr("rel", JSON.stringify({
displayedSites: data.moreSitesRel.displayedSites,
catNum: data.moreSitesRel.catNum,
streamPage: data.moreSitesRel.streamPage,
numSites: data.moreSitesRel.numSites
}));
僅供參考,您的mouseenter處理程式會比實際的 CSS 簡單得多
#load-more { cursor: pointer; }
您甚至不需要:hover因為cursor規則僅適用于滑鼠懸停。
uj5u.com熱心網友回復:
謝謝菲爾的幫助。我已經洗掉了游標的東西并將它放在我的 CSS 中:)
我最終解決了我的問題,這不是 jQuery JSON 問題,而是對infinite-scroll.php 檔案的 PDO 查詢。
這很奇怪。
查詢是:
$sitesQuery = 'SELECT '.$fields.' FROM annuaire_sites AS sites LEFT JOIN countries AS coun ON coun.id = sites.loc_country WHERE sites.category = '.$page['catNum'].' and sites.valid = 1 and sites.premium = 0 ORDER BY sites.date_ins DESC, sites.hour_ins DESC LIMIT :start, :perpage';
$res_sites = $bdd->prepare($sitesQuery);
$res_sites->bindValue(':start', 0, PDO::PARAM_INT);
$res_sites->bindValue(':perpage', 60, PDO::PARAM_INT);
$res_sites->execute();
$res_sites->setFetchMode(PDO::FETCH_OBJ);
我替換為:
$sitesQuery = 'SELECT '.$fields.' FROM annuaire_sites AS sites LEFT JOIN countries AS coun ON coun.id = sites.loc_country WHERE sites.category = '.$catNum.' and sites.valid = 1 and sites.premium = 0 ORDER BY sites.date_ins DESC, sites.hour_ins DESC LIMIT '.$start.', '.$displayedSites.'';
$res_sites = $bdd->prepare($sitesQuery);
$res_sites->execute();
$res_sites->setFetchMode(PDO::FETCH_OBJ);
由于我不知道的原因,我放棄了作為問題根源的 bindValue 東西!因為我在某些頁面上使用了相同的查詢并且它作業正常......
如果有人有解釋...
無論如何,再次感謝您的幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/434879.html
