我正在开展一个项目,我发布" thumbsup"和"喜欢"点击PHP脚本上的AJAX / POST。这将在处理后返回,具体取决于用户是否登录了错误数组(使用json_encode)。 0表示一切正常,1表示用户未登录。我写的提交函数在每次循环重新定义后都不返回错误变量。当我在每个循环上执行console.log(错误)时它确实返回1,但是当我在click函数上检查它时它返回false。我有以下两个功能:
我似乎无法理解我做错了什么。
function submit(tip,varid){
var error = false;
$.post( "/rwfr.php", { name: ""+tip+"", id: ""+varid+"" })
.done(function( data ) {
var results = jQuery.parseJSON(data);
$(results).each(function(key, value) {
error = value['error'];
return false;
})
});
return error;
}
$(".fa-thumbs-up").click(function(){
var idObj = $(this).parent().parent().attr("data-id");
var act = submit('thumbsup',idObj);
if(act == "1"){
console.log(act);
alert("You must log in before you can rate this video!");
}
});
答案 0 :(得分:-2)
虽然投票结果不合理,但我保留了这个答案,因为有类似问题的人可能会觉得这很简单,也很有帮助。
在您的案例中返回false
的原因是,当您从submit()
收到回复时,您的下一行即if(act=="1")
正在运行,这当然会返回false,因为您已使用vallue error
初始化false
。
你可以在你的功能中改变的是,你可以移动你的片段来检查回调函数中收到的响应中的错误,该回调函数必须在你的帖子请求的.done()
内调用。
见下文,
// your submit function
function submit(tip, varid, callback){
var response = $.post("post.php", { name: ""+tip+"", id: ""+varid+""});
response.done(function(data){
callback(JSON.parse(data), tip);
});
}
// your callback function
function callbackFunction(response, action_type){
// handle your prompts here based on your action_type i.e. thumbs up, down, favourite, etc.
console.log(response);
if(response.hasOwnProperty("error") && response["error"]=="1"){
console.log("you need to login to do this!");
}
}
// and pass the callback function to your submit function
var act = submit('thumbsup',idObj, callbackFunction);