php - 从 Javascript 函数返回一个值

标签 php javascript xmlhttprequest

我正在使用以下代码显示函数 test2 返回的值。

显示的输出是:x 的值是:undefined

谁能帮我解释一下如何从函数 test2 返回一个值?请注意函数test2XMLHTTPRequest

<script language="javascript">

    function test1()
    {
        var x = test2();
        alert('Value of x is: '+x);
    }

    function test2()
    {
        if(window.XMLHttpRequest)
        {
            abcd= new XMLHttpRequest();
        }
        else
        {
            abcd=new ActiveXObject("Microsoft.XMLHTTP");
        }

        abcd.onreadystatechange=function()
        {
            if (abcd.readyState==4 && abcd.status==200)
            {
                    return abcd.responseText; // it is getting value 2 here
            }
            else if(abcd.readyState < 4)
            {
                return -1;
            }
        }
        abcd.open("GET",sam.php,true);
        abcd.send();
    }

</script>

最佳答案

听起来您希望 XML HTTP 请求的值是 test2 的返回值。这是不可能的,因为此 XML HTTP 请求异步执行,而 test2 同步执行。

处理此问题的正确方法是将回调传递给 test2 以在请求完成时执行。回调提供从 XML HTTP 请求返回的值。例如

function test1() {
  test2(function (x) {
    alert('The value of x is ' + x);
  });
}

function test2(callback) {
  ...
  abcd.onreadystatechange=function() {
    if (abcd.readyState==4 && abcd.status==200) {
      callback(abcd.responseText);
    } else {
      callback(-1);
    }
  }
  ...
}

关于php - 从 Javascript 函数返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7018451/

相关文章:

javascript - 具有重力的2D碰撞检测-JavaScript

javascript - Promise 本身是否有一个时间,如果在特定的时间内从未解决,它最终会是 `reject` 本身吗?

php - 类似wordpress updater的远程升级脚本

javascript - 无法使用 AJAX 和 PHP 显示单选按钮值

php - 在页面上显示mysql数据而不刷新页面-下拉列表

javascript - 使用javascript关闭移动浏览器选项卡

php - mysql_query() 在数据库中搜索文本字符串时返回 false

javascript - 获取多个元素的属性值

javascript - 网页抓取基础知识

javascript - 有没有办法强制 XMLHttpRequest 使用 HTTP/1.1?