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

时间:2012-06-29 03:05:24

标签: php javascript jquery

我对jQuery&amp;网络开发一般。我正在尝试使用jQuery的“.getScript()”方法来加载一些用特定PHP文件编写的JavaScript脚本,但我想我错过了一些东西。 (注意:我注意到几个不同的问题,看起来有可能帮助我,但没有一个问题。如果有你知道的问题,请随时指出我的方向。谢谢。)< / p>

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

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]);
          }
     }
});

BTW,我们正在使用“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>

提前致谢,
-Mark

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

我认为你可能只是将你的phpScript.php文件编辑为

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

那没关系。