我想获得html网页的'打印价值'。
我尝试了以下查询,但showGetResult()只返回'null value'
但我的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>
答案 0 :(得分:5)
这是AJAX的工作方式(异步,如名称所示)。 {AJ}调用完成之前,showGetResult
函数返回。因此,showGetResult
只会返回null
,因为这是您分配给result
的内容。
在success
回调中移动任何依赖于AJAX调用结果的代码。或者,您可以使呼叫同步,但这通常不是您想要的。
答案 1 :(得分: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>
答案 2 :(得分:0)
默认情况下,AJAX请求是异步的;你不能在函数中返回结果,你需要使用回调。实现所需目标的最简单方法是将处理数据的代码放在success
处理程序中:
success:function(data)
{
alert(data);
result = data;
document.write(showGetResult('test'));
}
另外,请勿使用document.write
。
答案 3 :(得分:0)
根据jQuery.ajax的文档
,您的错误dataType
“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');
答案 4 :(得分: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>
答案 5 :(得分:0)
成功回调可以为您处理,而不是将document.write
用于您期望函数返回的内容,如下所示:
success:function(data) {
document.write(data);
}
答案 6 :(得分:0)
jQuery.ajax({
async: false, //add async false
url: 'http://localhost/index.php',
type: 'get',
dataType: 'text/html',
success:function(data)
{
alert(data);
result = data;
}
});