繁体   English   中英

jquery ajax 获取返回值

[英]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',
...


此外,正如其他人所说,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上使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM