Javascript jqueryajax成功范围

Javascript jqueryajax成功范围,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一行代码: $.ajax({ url: "ViewQuiz.aspx/SetAllQuestionsByQuizId", type: "POST", contentType: "application/json; charset=utf-8", dataType: 'json', data: "{'quizId':'" + quizId + "'}", success: function (data) { htmlString

我有一行代码:

$.ajax({
    url: "ViewQuiz.aspx/SetAllQuestionsByQuizId",
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: 'json',
    data: "{'quizId':'" + quizId + "'}",
    success: function (data) {
        htmlString += '<select class="inputTextStyle selectAnswerToQuestion">';
        $.map(data.d, function (item) {
            htmlString += '<option value="' + item.QuestionId + '">' + item.QuestionContent + '</option>';

        });
        htmlString += '</select>';


    },
    error: function (result) {

    }

});

return htmlString;
$.ajax({
url:“viewquick.aspx/SetAllQuestionsByQuizId”,
类型:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
数据类型:“json”,
数据:“{'quizId':'”+quizId+“}”,
成功:功能(数据){
htmlString+='';
$.map(数据.d,函数(项){
htmlString+=''+item.QuestionContent+'';
});
htmlString+='';
},
错误:函数(结果){
}
});
返回htmlString;
htmlString
没有返回任何内容。 虽然如果我
console.log
,它将返回我的对象


为什么?

Ajax意味着异步执行,一旦发出请求,控制将进一步移动。它不会等待Ajax调用的返回。
在您的示例中,将进行Ajax调用,当控件到达
return
语句
success
时,函数可能会执行,也可能不会执行,因此它不会返回任何内容。
您应该在
success
函数本身中执行所需的操作

success: function (data) {
        //...........
        htmlString += '</select>';
        // Do the required things here instead of returning `htmlString`

    },
成功:函数(数据){
//...........
htmlString+='';
//在此处执行所需操作,而不是返回'htmlString'`
},

实时问题

Ajax意味着异步执行,一旦发出请求,控制将进一步移动。它不会等待Ajax调用的返回。
在您的示例中,将进行Ajax调用,当控件到达
return
语句
success
时,函数可能会执行,也可能不会执行,因此它不会返回任何内容。
您应该在
success
函数本身中执行所需的操作

success: function (data) {
        //...........
        htmlString += '</select>';
        // Do the required things here instead of returning `htmlString`

    },
成功:函数(数据){
//...........
htmlString+='';
//在此处执行所需操作,而不是返回'htmlString'`
},

Realted question

在“error”函数中添加一些控制台stmt,并验证它是否失败。它将输入“success”,并正确返回我的结果。您不能从这样的异步函数中返回。您发送的JSON无效。@adeneo:我正在寻找相同的问题。在“error”中添加一些控制台stmt函数并验证它是否失败。输入“success”并正确返回我的结果。您不能从这样的异步函数返回。您发送的JSON无效。@adeneo:我在寻找相同的问题。