2010-10-27 112 views
0

我有我的代码问题。问题与JS jQuery AJAX

function fnFormatDetails (oTable, nTr) 
{ 
    var aData = oTable.fnGetData(nTr); 
    var sOut = ""; 

    var ajax = $.ajax({ 
     url: "/wemi/mediaplaner/show?id="+aData[1], 
     success: function(data) { 
      //return data; 
      //return sOut = data; 
      //console.log(sOut); 
     }, 
     error: function() { 
      //alert("Error"); 
     } 
    }); 

    //document.write(ajax.responseText); //write empty Text 
    console.log(ajax); //Real Object all is OK 

    //console.log(ajax.responseText); get empty Text 
    //alert(ajax.responseText); // get Empty Text 
    return sOut; 
} 

我只是需要打印ajaxed文本...正如你所看到的,我只得到未定义或空的响应。

,但如果我打印或在成功的功能警报,一切正常,我让我的反应......

回答

4

你已经发现了答案。阿贾克斯电话是异步。 “成功”处理程序中的代码将在HTTP请求完成时执行。但是,$.ajax函数本身在启动请求后立即返回。

正确的做法是将代码放在“成功”回调中。 (或拨打其他功能的电话)

+0

但是,如果成功返回...我没有回调如果我打印此功能...你知道我的意思,需要在其他功能中的文字,但我必须为此调用一个函数。我不得不ajaxed文本,但我的代码有点不对...... – 2010-10-27 14:15:20

+0

只需从“成功”代码中调用您的其他功能。您无法从$ .ajax调用中获得“返回”值 - 它不会以这种方式工作。 – Pointy 2010-10-27 14:27:13

+0

haw我可以让fnFormatDetails()返回ajaxed文本吗? – 2010-10-28 08:58:30