我正在对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
然而,它似乎没有混合。我该如何解决这个问题?
答案 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,
保罗