jQuery从ajax加载的页面传递参数到外部函数

时间:2012-04-02 00:34:32

标签: php javascript jquery ajax

标题可能听起来令人困惑,但实际上并非如此,我只是不知道如何解释它。所以我的主页有一个脚本,为我网站的一部分加载外部php文件。在那个php文件中,我需要在主javascript文件(加载它的文件)中调用一个带参数的函数。我尝试了.bind("click", parameter1, paramter2, loadFunction);,它的扩展版本和.click({...}),但我无法让它发挥作用。我该怎么做呢?我不想把我需要调用的代码放在php文件中,因为它调用了另一个ajax请求(是的,我的网站是ajax很重)并且不希望人们发现它很容易,我宁愿它是埋在我的javascript文件中。谢谢你的帮助!如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:1)

你可能会说它并不令人困惑,但它确实有点混乱。 ;-)我的回答是基于以下事件流程:

  1. Ajax调用是从主JS中定义的函数进行的。
  2. PHP对给定参数起作用,执行“某事”,并返回结果
  3. 返回的结果可能不包含更多要执行的脚本,但是,根据返回结果的内容,会执行更多脚本。
  4. 这句话:“我宁愿把它埋在我的javascript文件中”给我发了一个红旗。如果有人想知道你的网站在做什么,他们会弄清楚脚本是否在缩小的JS文件中。我认为返回脚本实际上会更安全,因为范围将是有限的。

    那就是说,无论如何我都不会回复剧本。问题的前提是它自己的答案。

    1. 进行Ajax调用,在查询字符串或POST数据中将参数传递给PHP。
    2. 您的PHP处理参数并返回响应。
    3. Ajax调用的成功函数抓取响应,可能用JSON编码以便于处理,然后启动主应用程序中作用域的函数调用。
    4. 老实说,我无法确定bindclick失败的位置甚至会影响到等式。您是否首先无法绑定第一个Ajax调用的click?我想如果你的网站是Ajax-heavy你已经知道怎么做了,不是吗?

      [回复评论]

      如果你的PHP生成并返回JSON,你可以用它做任何你想做的事情:

      {
          "content": "<div>Some HTML</div>",
          "action": "append_and_refresh",
          "recordsDeleted": 5
      }
      

      在成功功能中,您所要做的就是按需要处理它:

      success: function(data) {
        $('#someDiv').html(data.content);
        if(data.action == "append_and_refresh") {
          doAppend();
          doRefresh();
        }
        recordsDeleted += data.recordsDeleted
      }
      

      一个有意简化的例子,但希望你能得到图片!