0

正如我们所知,AJAX 用于从服务器请求 HTML 格式的 Web 部件。是否可以使用 AJAX 请求包含函数的脚本?

4

3 回答 3

1

是的,您可以通过 ajax 加载 javascript

http://api.jquery.com/jQuery.getScript/

$.getScript("ajax/test.js")
.done(function(script, textStatus) {
  console.log( textStatus );
})
.fail(function(jqxhr, settings, exception) {
  $( "div.log" ).text( "Triggered ajaxError handler." );
});

您也可以尝试像(如何在通过 ajax 加载的 html 中运行 javascript)中提到的类似方法:

require("extra.js", function () {
    functionDefinedInExtraJS();
});

//Sample require function:

function require(file, callback) {

    var script = document.getElementsByTagName('script')[0],
        newjs = document.createElement('script');

    // IE
    newjs.onreadystatechange = function () {
        if (newjs.readyState === 'loaded' || newjs.readyState === 'complete') {
            callback();
        }
    };

    // others
    newjs.onload = function () {
        callback();
    };

    newjs.src = file;
    script.parentNode.insertBefore(newjs, script);
}

另一种方法是使用 eval() 函数并将字符串回复转换为有效的 javascript 代码。

于 2013-09-06T08:25:50.583 回答
1

这是一个如何使用eval()来完成您需要的示例:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      eval(xmlhttp.responseText);
      // you can use whatever functionw as returned from the server from this line on :)
    }
  }

xmlhttp.open("GET","your-server-page-url",true);
xmlhttp.send();
于 2013-09-06T08:34:46.993 回答
0

是否可以使用 AJAX 请求包含函数的脚本?

对的,这是可能的。这些功能可以在客户端上执行。例如,使用 jQuery,您甚至可以拥有一个允许您执行此类请求的函数:$.getScript.

于 2013-09-06T08:26:03.863 回答