【问题标题】:Call JavaScript Function From PHP Script Using jQuery getScript使用 jQuery getScript 从 PHP 脚本调用 JavaScript 函数
【发布时间】:2012-06-29 03:05:23
【问题描述】:

总的来说,我对 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 调用的响应正文的 sn-p:

<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>

提前致谢,
-马克

【问题讨论】:

  • setValues() 是否在其他脚本中工作?当您尝试getScript() 时,您可以发布您(从萤火虫网络面板)获得的响应正文吗?
  • @prodigitalson - 是的,它似乎确实有效。我已将响应正文的部分从 getScript() 中的 GET 调用移到我的问题中。它得到了一些看起来正确的东西,因此,脚本似乎应该可用。

标签: php javascript jquery


【解决方案1】:

如果您正在加载 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();

【讨论】:

  • 感谢您的回复。你是对的。这将是最简单的。但是,我试图引用的脚本的设置方式是在生成/写入脚本的 PHP 文件中。我的 jQuery 方法所在的文件实际上是一个 PHP 文件,它被必须处理任何用户输入的所有其他文件引用。因此,将它包含在整个文件中将对站点的其余部分产生负面的性能影响。这就是我尝试使用“getScript()”的原因。
  • 我明白了。我的答案中的新代码是否适合您的情况?
  • 我尝试了您的新建议,但没有任何变化。我想知道我是在尝试以不受支持的方式使用 getScript(),还是以不打算使用的方式使用它。但是,我认为,只要 JS 已经写好,我就可以访问它。我想情况并非如此。无论如何,我很感激你试图帮助我,尽管我可能不得不把它搁置一段时间。非常感谢。
【解决方案2】:

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

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

没关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-09
    • 1970-01-01
    • 2010-10-16
    • 2021-12-11
    • 1970-01-01
    • 2013-08-09
    • 1970-01-01
    • 2013-11-01
    相关资源
    最近更新 更多