调用jquery ajax响应中定义的函数

时间:2010-07-05 14:20:17

标签: javascript jquery

我正在对php页面执行ajax请求('test.php') test.php里面是

<script type="text/javascript">
 function test() {
alert('test');
}
</script>

<div id="abc">some normal content too</div>

现在这个函数对每个页面加载都是唯一的,即它是通过php生成来做不同的事情

所以,我的问题是如何调用该函数test();

因为jquery认为响应只是文本所以它不会评估它

jquery具有返回的数据类型

一个是脚本,另一个是html

然而,它似乎没有混合。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

jQuery .load()函数评估响应内容中的<script>个标记,但如果您对.load()的调用确定 not 涉及一个选择器,在将部分响应插入DOM之前将其拉出。

因此,这个电话:

 $('#myContainer').load("/some/url", function() { /* ... */ });

将导致运行任何脚本内容,但是:

 $('#myContainer').load("/some/url #stuffIWant", function() { /* ... */ });

不会。我不知道它为什么会这样,但确实如此。

如果您是以第一种方式加载它,请了解在加载完成之前,您将无法使用任何定义为全局函数(或全局函数)的任何内容。因此:

$('#someplace').load(url, function() { } );
newGlobalFunction("hi");

将无效,因为在异步请求完成之前不会定义“newGlobalFunction”。因此,这应该工作:

$('#someplace').load(url, function() {
  newGlobalFunction("hi");
});

如果你的ajax结果只是那个脚本内容,你也可以考虑不将它包装在<script>标签中,只是自己评估它!

答案 1 :(得分:0)

您是否尝试将其作为外部文件加载?外部文件可以是一个php页面以及生成JS代码。

BR,
保罗