使用 jQuery getScript 从 PHP 脚本调用 JavaScript 函数


Call JavaScript Function From PHP Script Using jQuery getScript

我对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时设置了"jQuery.noConflict();",这就是为什么我没有使用简写的"$()"表示法。

以下是 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>

提前感谢,
-马克

如果要加载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();

我想你可以把你的phpScript.php文件编辑为

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

那就没问题了。