2012-04-17 256 views
3

我想获得html页面的'打印值'。jquery ajax获取返回值

我想下面的查询,但showGetResult()只是返回“空值”

但我的Apache服务器日志打印我访问的index.php当我尝试此代码。

(的index.php只是打印的HelloWorld)

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"><\script> 
<script type="text/javascript"> 
function showGetResult(name) 
{ 
    var result = null; 
    jQuery.ajax({ 
     url: 'http://localhost/index.php', 
     type: 'get', 
     dataType: 'text/html', 
     success:function(data) 
     { 
      alert(data); 
      result = data; 
     } 
    }); 
    return result; 
} 

document.write(showGetResult('test')); 
</script> 

回答

3

我想你要做的是这样的。

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"><\script> 
<script type="text/javascript"> 
function showGetResult(name) 
{ 
    jQuery.ajax({ 
     url: 'http://localhost/index.php', 
     type: 'get', 
     dataType: 'text/html', 
     success:function(data) 
     { 
      alert(data); 
      document.write(data); 
     } 
    }); 
} 

showGetResult('test'); 
</script> 
0

AJAX请求默认情况下aynchronous;你不能在函数中返回他们的结果,你需要使用回调函数。达到你想要什么,最简单的方法就是把你的代码来处理你的success处理你的数据:

success:function(data) 
    { 
     alert(data); 
     result = data; 
     document.write(showGetResult('test')); 
    } 

另外,不要使用document.write

5

这是AJAX的工作方式(异步,如名称所示)。在AJAX调用完成之前,showGetResult函数会返回。因此,showGetResult只会返回null,因为这是您分配给result的内容。

移动任何取决于success回调内的AJAX调用结果的代码。或者,您可以使呼叫同步,但这通常不是您想要的。

0

你必须每个文档的错误dataTypejQuery.ajax

“HTML”:返回HTML纯文本;包含的脚本标记在插入到DOM中时被评估。

所以要使用html

... 
dataType: 'html', 
... 


此外,正如其他人所说,Ajax请求是异步的。所以你需要重构你的代码。例如:

function showGetResult(name) 
{ 
var result = null; 
jQuery.ajax({ 
    url: 'http://localhost/index.php', 
    type: 'get', 
    dataType: 'html', 
    success:function(data) 
    { 
     alert(data); 
     result = data; 
     document.write(result); 
    } 
}); 
} 

showGetResult('test'); 
0

您错过了一个基本点。调用showGetResult时,不运行success方法。它运行asynchronously

在您放入return result;时它仍然为空(因为success尚未调用)。

你需要做的是让document.write在调用成功后执行。无论是这样的:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"><\script> 
<script type="text/javascript"> 
function showGetResult(name) 
{ 
    var result = null; 
    jQuery.ajax({ 
     url: 'http://localhost/index.php', 
     type: 'get', 
     dataType: 'text/html', 
     success:function(data) 
     { 
      alert(data); 
      document.write(data); 
     } 
    }); 
    return result; 
} 

//document.write(showGetResult('test')); 
showGetResult('test'); 
</script> 

还是有回调:

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"><\script> 
<script type="text/javascript"> 
function showGetResult(name) 
{ 
    var result = null; 
    jQuery.ajax({ 
     url: 'http://localhost/index.php', 
     type: 'get', 
     dataType: 'text/html', 
     success:function(data) 
     { 
      alert(data); 
      writeToDocument(data); 
     } 
    }); 
} 

function writeToDocument(data) { 
    document.write(data); 
} 

showGetResult('test'); 
</script> 
0

而不是你所期望的返回功能使用document.write,成功回调可以照顾,对你,就像这样:

success:function(data) { 
    document.write(data); 
}