Javascript 这个js代码有什么问题,从函数返回变量
我正在从事一个项目,在这个项目中,我发布了thumbsup,并喜欢通过AJAX/post在PHP脚本上单击。这将在处理后返回,具体取决于用户是否登录到带有json_encode的错误数组。0表示一切正常,1表示用户未登录。我编写的submit函数在每个循环上重新定义错误变量后不会返回它。当我在每个循环上执行console.logerror时,它确实返回1,但当我在click函数上检查它时,它返回false。我有以下两个功能: 我似乎无法理解我做错了什么Javascript 这个js代码有什么问题,从函数返回变量,javascript,php,jquery,Javascript,Php,Jquery,我正在从事一个项目,在这个项目中,我发布了thumbsup,并喜欢通过AJAX/post在PHP脚本上单击。这将在处理后返回,具体取决于用户是否登录到带有json_encode的错误数组。0表示一切正常,1表示用户未登录。我编写的submit函数在每个循环上重新定义错误变量后不会返回它。当我在每个循环上执行console.logerror时,它确实返回1,但当我在click函数上检查它时,它返回false。我有以下两个功能: 我似乎无法理解我做错了什么 function submit(tip,v
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!");
}
});
虽然被否决了,但我保留了这个答案,因为有类似问题的人可能会觉得这个答案简单而有用
在您的例子中返回false的原因是,当您从submit获得响应时,您的下一行即ifact==1正在运行,这当然会返回false,因为您已经用vallue false初始化了error
您可以在函数中更改的是,您可以只移动用于检查回调函数中收到的响应错误的代码段,该回调函数必须在post请求的.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);
据我所知,return false确实打破了each循环。我试过了,没有返回false,同样的结果。在jQuery的内部返回false。每个都会停止迭代。在native.forEach或lodash或下划线中不会出现这种情况。在我看来,这对他们来说是一个可怕的设计决定。谢谢,这在并没有每个循环的情况下都能工作。但我的代码到底出了什么问题?有没有办法让它像我当初想的那样工作。我无法使用submit函数中的错误输出,因为我将使用此函数执行更多操作:竖起大拇指、竖起大拇指、稍后观看、添加到收藏夹、报告,以便每个单击操作都应有自己的消息。好的。您可以检查答案的编辑部分,立即删除返回false;在每个循环中。另请参见。您知道submit函数在.done函数被调用之前很久就返回了,对吗?