Jquery $.getJson>;$。每个返回未定义的 函数getData(d){ 后退=新对象(); $.getJSON(“../do.php?”, 功能(响应){ 如果(response.type=='success'){ 返回={“类型”:“成功”,“内容”:“}; $.each(response.data,函数(data){ Back.content+=''+数据.title+'' Back.content+=''+data.content+''; }); } 否则{ 返回={“类型”:“错误”}; } 返回; }); } log(getData());

Jquery $.getJson>;$。每个返回未定义的 函数getData(d){ 后退=新对象(); $.getJSON(“../do.php?”, 功能(响应){ 如果(response.type=='success'){ 返回={“类型”:“成功”,“内容”:“}; $.each(response.data,函数(data){ Back.content+=''+数据.title+'' Back.content+=''+data.content+''; }); } 否则{ 返回={“类型”:“错误”}; } 返回; }); } log(getData());,jquery,Jquery,返回未定义!为什么?不能以同步方式调用异步函数。在代码中,这是: function getData(d){ Back = new Object(); $.getJSON('../do.php?', function(response){ if(response.type == 'success'){ Back = { "type" : "success", "content" : "" }; $.each(response.data, function(

返回未定义!为什么?

不能以同步方式调用异步函数。在代码中,这是:

function getData(d){
Back = new Object();

$.getJSON('../do.php?',
   function(response){    
    if(response.type == 'success'){ 
    Back = { "type" : "success", "content" : "" };
    $.each(response.data, function(data){   
       Back.content +='<div class="article"><h5>'+data.title+'</h5>'
       Back.content +='<div class="article-content">'+data.content+'</div></div>';
      });

    }
    else{
     Back = {"type" : "error" };
    }

    return Back;
  });
}

console.log(getData()); 
Back=新对象();
$.ajax({
键入:“获取”,
async:false,
url:“../do.php”,
数据类型:“json”,
成功:功能(响应){
如果(response.type=='success'){
返回={“类型”:“成功”,“内容”:“};
$.each(response.data,函数(data){
Back.content+=''+数据.title+''
Back.content+=''+data.content+'
; }); } 否则{ 返回={“类型”:“错误”}; } 返回; }});

它应该这样工作吗?

好的,他可以通过添加$.ajaxSetup({async:false})使它同步;在getData函数的最开始,它应该可以正常工作。@Bob-很好的观点…但我没有遇到过这样的情况,即您希望像那样锁定浏览器,尽管我确信它存在。要以这种方式执行,您需要将返回放在
$.ajax
之外,或者在
$.ajax
调用之后只访问
Back
,只使用success函数设置它,而不返回它。
function(response){    
    if(response.type == 'success'){ 
    Back = { "type" : "success", "content" : "" };
    $.each(response.data, function(data){   
       Back.content +='<div class="article"><h5>'+data.title+'</h5>'
       Back.content +='<div class="article-content">'+data.content+'</div></div>';
      });

    }
    else{
     Back = {"type" : "error" };
    }    
    return Back;
}
Back = new Object();
$.getJSON('../do.php?', function(response) {    
  if(response.type == 'success') { 
    Back = { "type" : "success", "content" : "" };
    $.each(response.data, function(data) {   
      Back.content +='<div class="article"><h5>'+data.title+'</h5>';
      Back.content +='<div class="article-content">'+data.content+'</div></div>';
    });
  } else {
    Back = {"type" : "error" };
  }
  console.log(Back); 
});
Back = new Object();

$.ajax({
    type: "GET",
    async: false,
    url: "../do.php",
    dataType: 'json',
    success: function(response){
        if(response.type == 'success'){ 
            Back = { "type" : "success", "content" : "" };
            $.each(response.data, function(data){           
                        Back.content +='<div class="article"><h5>'+data.title+'</h5><div class="article-image"><img src="'+data.image+'" alt="article_image" /></div>'
                        Back.content +='<div class="article-content">'+data.content+'</div><br class="clear" /></div><!-- /article -->';
                    });

            }
            else{
                Back = {"type" : "error" };
            }

            return Back;
    }});