这个js代码有什么问题,从函数返回变量

时间:2017-04-12 18:54:01

标签: javascript php jquery

我正在开展一个项目,我发布" 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!");
    }
});

1 个答案:

答案 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);