0

一般来说,我对 jQuery 和 Web 开发非常陌生。我正在尝试使用 jQuery 的“.getScript()”方法来加载几个用特定 PHP 文件编写的 JavaScript 脚本,但我认为我遗漏了一些东西。(注意:我注意到几个不同的问题,看起来他们有可能帮助我,但没有一个。如果你知道,请随时向我指出那个方向。谢谢。)

当我在 Firebug 中调试它时,它会点击“.getScript()”调用然后跳到下一行,似乎没有执行。
这是我正在尝试的方法:

jQuery.getScript("relative/path/to/script/phpScript.php", function(){
    alert("I'm HERE!");
    setValues(); // JavaScript function that's written by phpScript.php
});

在这种情况下,JavaScript 是由“phpScript.php”文件生成的,而我的“alert()”永远不会运行,但我不知道为什么。有任何想法吗?
我确实注意到按照另一个问题中的建议,我遇到了某种解析错误。我不知道如何解决。这是代码:

jQuery(document).ajaxError(function(event, request, settings){
      alert('error loading: ' + request.status + "\nevent: "+ event);
      for (var key in request){
          if (request.hasOwnProperty(key)) {
              alert(key + " -> " + request[key]);
          }
     }
});

顺便说一句,我们正在使用“jQuery.noConflict();”运行 jQuery 设置,这就是为什么我不使用速记“$()”表示法。

以下是 getScript() 中 GET 调用的响应正文的片段:

<html><script type="text/javascript">
function setValues()
    jQuery("#formname").text(window.formNAME);
    jQuery("#Form_Path").text(window.formPATH);
    jQuery("#Form_DB").text(window.formDB);
    jQuery('#pertaining_to').text(window.pertainNAME);
    jQuery("#Pertain_To_ID").text(window.pertainID);
    jQuery("#Form_ID").text(window.formID);
    jQuery("#Field_ID").text(window.fieldName);
}
</script>

<head>

在此先感谢,
-马克

4

2 回答 2

4

如果您正在加载 JS 脚本,请尝试将它们作为离散函数写入 .js 文件(例如:jsscript.js),然后使用以下 HTML 行:

<script type='text/javascript' src='jsscript.js'></script>

然后你可以直接调用函数而不使用 .getScript()。(当然,您需要将上述行放在调用脚本的位置之前。)

这似乎是一种比您当前尝试的更清洁的方法。

编辑:鉴于您目前的情况(即:生成 JS 脚本的 PHP 页面和调用脚本的 PHP 页面),也许您可​​以这样做?

//PHP page that generates the scripts
function gen_script() {
    //JS script generated into $script variable
    return $script;
}

//PHP page that calls the scripts
include ('generate.php');
echo gen_script();
于 2012-06-29T03:15:48.700 回答
0

我以为您可以将 phpScript.php 文件编辑为

function setValues(){
  jQuery("#formname").text(window.formNAME);
  jQuery("#Form_Path").text(window.formPATH);
  //...
}

那会好的。

于 2013-11-05T07:52:13.770 回答