这是我想要完成的.我有一个使用jQuery对
PHP文件进行AJAX调用的表单. PHP文件与数据库交互,然后创建页面内容以作为AJAX响应返回;即,此页面内容将写入$.ajax调用的成功函数中的新窗口.作为PHP文件返回的页面内容的一部分,我有一个简单的HTML脚本标记,其中包含一个
JavaScript文件.特别:
这不是在PHP中回应(虽然我已经尝试过),它只是html. pageControl.js与生成内容的php文件位于同一目录中.
无论我尝试什么,我似乎都无法获得包含的pageControl.js文件,或者在为响应AJAX调用成功而创建的新窗口中工作.我最终得到像“预期的对象”或未定义的变量之类的错误,这让我相信文件没有包含在内.如果我将JavaScript直接复制到PHP文件中,而不是将脚本标记与src一起使用,我可以使它工作.
这里有关于调用文件,php和jQuery AJAX之间的范围解析的东西吗?我将来希望以这种方式包含javascript文件,并希望了解我做错了什么.
再次问好:
我已经解决了这个问题,但仍然没有运气.我将尝试澄清我在做什么,也许这会带来一些想法.我根据要求提供了一些代码,以帮助澄清一些事情.
这是序列:
>用户选择一些选项,然后单击表单上的提交按钮.
>单击表单按钮由jQuery代码处理,如下所示:
$(document).ready(function() {
$("#runReport").click(function() {
var report = $("#report").val();
var program = $("#program").val();
var session = $("#session").val();
var students = $("#students").val();
var dataString = 'report=' +report+
'&program=' +program+
'&session=' +session+
'&students=' +students;
$.ajax({
type: "POST",
url: "process_report_request.php",
cache: false,
data: dataString,
success: function(pageContent) {
if (pageContent) {
$("#result_msg").addClass("successMsg")
.text("Report created.");
var windowFeatures = "width=800,menubar=yes,scrollbars=1,resizable=1,status=yes";
// open a new report window
var reportWindow = window.open("", "newReportWindow", windowFeatures);
// add the report data itself returned from the AJAX call
reportWindow.document.write(pageContent);
reportWindow.document.close();
}
else {
$("#result_msg").addClass("failedMsg")
.text("Report creation failed.");
}
}
}); // end ajax call
// return false from click function to prevent normal submit handling
return false;
}); // end click call
}); // end ready call
此代码对PHP文件(process_report_request.php)执行AJAX调用,该文件为新窗口创建页面内容.此内容取自数据库和HTML.在PHP文件中,我想在新窗口中使用javascript包含另一个javascript文件.我想把它包括如下
更改路径文件夹名称以保护无辜:)
pageControl.js文件实际上与jQuery代码文件和php文件位于同一文件夹中,但我正在尝试完整路径只是为了安全.我也可以使用浏览器中的URL访问js文件,我可以使用脚本src标记将其成功包含在静态html测试页面中.
在javascript文件包含在php文件中之后,我调用了它的一个函数,如下所示(来自php的echo):
echo '';
因此,一旦php文件将所有页面内容发送回AJAX调用,则打开新窗口,并通过上面的jQuery代码将返回的内容写入其中.
当我运行页面时,writePageControls行是我收到错误“Error:Object expected”的地方.但是,由于JavaScript在静态HTML页面中工作正常,并且在PHP文件中包含“内联”时,它使我认为这是某种路径问题.
同样,无论我尝试什么,我对pageControls.js文件中的函数的调用都不起作用.如果我将pageControl.js文件的内容放在脚本标记之间的php文件中并且不做任何其他更改,它会按预期工作.
根据你们有些人已经说过的话,我想知道新打开的窗口的路径分辨率是否不正确.但我不明白为什么因为我正在使用完整的路径.另外,为了使问题更加混乱,我的链接样式表在PHP文件中运行得很好.
抱歉这是多久,但如果有人有时间进一步研究这个问题,我将非常感激.我很难过.当涉及到很多这方面的时候我是新手,所以如果有更好的方法来做到这一点并避免这个问题,我全都是耳朵(或者我认为是眼睛……)