javascript - 从函数返回 xmlhttp responseText 作为返回

标签 javascript ajax xmlhttprequest responsetext

<分区>

我是 javascript 和 php 的新手,我的目标是:从 xmlhttp responseText 返回字符串到函数返回值。所以我可以将它与 innerText 或 innerHTML 方法一起使用。 html 代码:

<script>
function loadXMLDoc(myurl){
    var xmlhttp;
    if (window.XMLHttpRequest){
        xmlhttp=new XMLHttpRequest();}
    else{
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}

     xmlhttp.onreadystatechange=function(){
         if (xmlhttp.readyState==4 && xmlhttp.status==200){
              xmlhttp.responseText;}
     }

    xmlhttp.open("GET",myurl,true);
    xmlhttp.send();
}
</script>

最佳答案

你不能。

既不会同步运行代码,也不会返回任何东西给loadXMLDoc,而是返回给onreadystatechange处理程序的匿名函数。

最好的办法是传递一个回调函数。

function loadXMLDoc(myurl, cb) 
{
   // Fallback to Microsoft.XMLHTTP if XMLHttpRequest does not exist.
   var xhr = (window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));

    xhr.onreadystatechange = function()
    {
        if (xhr.readyState == 4 && xhr.status == 200)
        {
            if (typeof cb === 'function') cb(xhr.responseText);
        }
    }

   xhr.open("GET", myurl, true);
   xhr.send();

}

然后像这样调用它

loadXMLDoc('/foobar.php', function(responseText) {
    // do something with the responseText here
});

关于javascript - 从函数返回 xmlhttp responseText 作为返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12421860/

相关文章:

javascript - 使用弹出窗口锁定屏幕,直到时间页面完全加载

javascript - 尽管有 <all_urls> list 权限,但来自扩展程序的 Xhr 仍被阻止

javascript - 简单 XMLHttpRequest 失败,Access-Control-Allow-Origin header 为 null

upload - XMLHttpRequest upload.onprogress 立即完成

javascript - Underscore的查找数组功能如何实现

javascript - 为过渡的每一帧运行自定义计算

javascript - 使用 jQuery 发送 'simple' POST 请求,但仍然收到 CORS

php - 使用 laravel 5 和 ajax 将数据发布到数据库时出现 500 内部服务器错误

javascript - 如何检测浏览器对 VML 或 SVG 的支持

javascript - 更改事件未触发 - Kendo ComboBox