jquery ajax 获取返回值
jquery ajax get return value
我想获取HTML页面的"打印值"。
我尝试了下面的查询,但 showGetResult() 只返回"空值"
但是当我尝试此代码时,我的 Apache 服务器日志打印了我访问索引.php。
(索引.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',
...
<小时 />此外,正如其他人所说,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');
你在这里错过了一个基本点。调用 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
,如下所示:
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;
}
});
- 如何从客户端的数组中获取用户输入和返回值
- 如何获取事件的返回值
- 获取最后一个返回值
- AngularJS:如何获取$http结果作为函数的返回值
- 如何在 Python 中获取此 JavaScript 函数的返回值
- 如何获取 jQuery 回调触发返回值
- 从ID Jquery类获取返回值时出现问题
- JSON获取地理位置在HTML中未返回值
- 如何获取在HTML页面上执行的Javascript函数的返回值
- 从 html.append 追加的 html 下拉列表中获取返回值
- 如何从Ajax请求中获取返回值并将其分配到元素中
- 安卓webview活动,如何获取js返回值
- 如果我使用html表单(而不是ajax),则获取服务器的响应代码或返回值
- jQuery deferred:用于延迟函数的返回,直到函数内的异步调用完成+获取返回值
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 在检查选中哪个按钮并从字段中获取值后返回值
- 如何在 javascript 中获取递归函数来输出每个返回值
- 获取 jQuery get().done() 函数的返回值
- 无法在 jQuery 中获取 Rails 返回值
- 将Angular $http返回值获取到另一个对象中