[英]jquery ajax get return value
我想获得 html 页面的“打印值”。
我试过下面的查询,但 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>
这就是 AJAX 的工作方式(异步,顾名思义)。 showGetResult
函数在 AJAX 调用完成之前返回。 因此, showGetResult
将简单地返回null
因为这是您分配给result
。
在success
回调中移动依赖于 AJAX 调用结果的任何代码。 或者,您可以使调用同步,但这通常不是您想要的。
我想你想做的是这个。
<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>
AJAX 请求默认是异步的; 你不能在函数中返回他们的结果,你需要使用回调。 实现您想要的最简单方法是将处理数据的代码放在success
处理程序中:
success:function(data)
{
alert(data);
result = data;
document.write(showGetResult('test'));
}
另外,不要使用document.write
。
根据jQuery.ajax文档,您有错误的dataType
:
"html": 以纯文本形式返回 HTML; 包含的脚本标签在插入 DOM 时进行评估。
所以你想使用html
:
...
dataType: 'html',
...
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');
你在这里错过了一个基本点。 调用 showGetResult 时不会运行success
方法。 它是异步运行的。
在您放置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>
成功回调可以为您处理这些,而不是在您期望函数返回的document.write
上使用document.write
,如下所示:
success:function(data) {
document.write(data);
}
jQuery.ajax({
async: false, //add async false
url: 'http://localhost/index.php',
type: 'get',
dataType: 'text/html',
success:function(data)
{
alert(data);
result = data;
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.