我正在尝试使用'changeRating()'方法在我的数据库中添加'like',当用户点击本地按钮,类似按钮或Twitter按钮时。
但是,当用户在Firefox中点击这些按钮时,我的'喜欢'不会增加,在Chrome中一切正常。在Firefox中,它仅在激活JQuery开头的警告时有效吗?
jQuery(document).ready(function () {
//alert('test'); (when this is activated it works)
$(".fb-like").mouseup(function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
FB.Event.subscribe('edge.create',
function (response) {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
$(".twitter-share-button").mouseup(function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
twttr.events.bind('click', function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
$("#stemknop").click(function () {
//voeg event handler toe aan de click-functie op de link (die als className twitter-share-button heeft meegekregen)
var vraagIdToUpdate = $(".vraagid").attr("value");
//alert('gelukt');
$(this).css({ 'opacity': '0.4' });
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
function changeRating(vraagId) {
//Maak een JSON object aan met dezelfde property-name als ons Model classe
var shareModel = { vraagID: vraagId };
$.post("/api/ShareAPI/ChangeNumberOfShares", shareModel).success(function (result) { $('.aantalStemmen').text(result.newAantalShares) });
}
});
我知道当一些代码需要特定的东西时,有可能加载太快或者不存在的东西...... alert()会导致我的代码“等待”,因此它确实有效。但我似乎无法找到导致此问题的代码。
编辑:我的firefox控制台声明如下:
ReferenceError:FB未定义Vraag:143 ReferenceError:FB不是 定义Vraag:setUserData()wordt的247 Gebruik van getUserData() niet meer ondersteund。 Gebruik in plaats daarvan WeakMap of element.dataset。 requestNotifier.js:64“无效的应用ID:必须是 表示应用程序ID的数字或数字字符串。“sdk.js:53 “尚未创建”fb-root“div,自动创建”sdk.js:53“No 回调传递给ApiClient“sdk.js:53错误:容器不是 定义格式+ nl,默认+ nl,ui + nl,corechart + nl.I.js:130 Gebruik van setUserData()的getUserData()wordt niet meer ondersteund。 Gebruik in plaats daarvan element.dataset的弱地图。 requestNotifier.js:64 Gebruik van getPreventDefault()wordt niet meer ondersteund。 Gebruik 在plaats daarvan defaultPrevented。 jquery-1.8.2.js:3260错误: 容器未定义
答案 0 :(得分:0)
将您的发布请求更改为ajax并使请求同步: 例如:
$.ajax({
type: 'POST',
url: "/api/ShareAPI/ChangeNumberOfShares",
data: shareModel,
success: function(result) {
$('.aantalStemmen').text(result.newAantalShares);
},
async:false
});
答案 1 :(得分:0)
编辑:尝试查看答案Is there a way to detect if the Facebook Javascript SDK loaded successfully?
试试这个:
jQuery(document).ready(function () {
//alert('test'); (when this is activated it works)
FB.Event.subscribe('edge.create', function (response) {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
$(".fb-like").mouseup(function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
$(".twitter-share-button").mouseup(function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
twttr.events.bind('click', function () {
var vraagIdToUpdate = $(".vraagid").attr("value");
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
$("#stemknop").click(function () {
//voeg event handler toe aan de click-functie op de link (die als className twitter-share-button heeft meegekregen)
var vraagIdToUpdate = $(".vraagid").attr("value");
//alert('gelukt');
$(this).css({ 'opacity': '0.4' });
if (vraagIdToUpdate != '') {
changeRating(vraagIdToUpdate);
}
});
function changeRating(vraagId) {
//Maak een JSON object aan met dezelfde property-name als ons Model classe
var shareModel = { vraagID: vraagId };
$.post("/api/ShareAPI/ChangeNumberOfShares", shareModel).success(function (result) { $('.aantalStemmen').text(result.newAantalShares) });
}
});
});