2012-04-02 111 views
0

标题可能听起来令人困惑,但事实上并非如此,我只是不知道如何解释它。所以我的主页有一个脚本,它为我网站的一部分加载一个外部的php文件。在该PHP文件中,我需要在主JavaScript文件(加载它的文件)内调用带有参数的函数。我试过.bind("click", parameter1, paramter2, loadFunction);,这个的扩展版本和.click({...}),但我不能得到它的工作。我会如何去做这件事?我不想把我需要调用的内部代码放到php文件中,因为它调用了另一个Ajax请求(是的,我的网站是ajax很重),不想让人们很容易找到它,我宁愿它埋在我的JavaScript文件中。谢谢你的帮助!如果您需要更多信息,请告诉我。jQuery将参数从ajax加载页面传递给外部函数

回答

1

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

  1. Ajax调用是由主JS中定义的函数调用的。
  2. PHP对给定的参数起作用,执行“某些事情”并返回结果
  3. 返回的结果可能不包含更多的脚本来执行,但是更多的脚本根据返回结果的内容执行。

此声明:“我宁愿将它埋在我的JavaScript文件中”为我发送红旗。如果有人想知道你的网站正在做什么,他们会知道脚本是否在缩小的JS文件中。我认为返回脚本实际上会更安全,因为范围将会受到限制。

这就是说,我不会返回一个脚本。这个问题的前提是它自己的答案。

  1. 进行Ajax调用,在查询字符串或POST数据中将参数传递给PHP。
  2. 您的PHP处理参数并返回响应。
  3. Ajax调用的成功函数抓取响应,可能使用JSON进行编码,以便于处理,并且在主应用程序中启动一个函数调用。

老实说,我不知道bindclick的故障甚至是因素的影响。您是否无法首先绑定第一个Ajax调用的点击?我想如果你的网站是Ajax重的,你已经知道如何做到这一点,不是吗?

[回应置评]

如果你的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 
} 

一个故意简化的例子,但希望你得到的照片!

+0

首先,非常感谢!其次,如果他们想要查看代码,你确实提出了一个很好的观点。你的答案的问题是我的PHP不只是回显一些返回文本/变量。它返回一些HTML,然后我将它添加到容器中。我如何发送多个返回给用户,追加一个并将另一个存储在变量中?这是我最近的主要问题。我只是试图获得工作要求,并且使用了当时我能想到的任何方法。现在我想到了,在这种情况下他们毫无意义,对结果没有任何影响。 – 2012-04-02 00:53:01

+0

增加了一个愚蠢的例子,你可以用一个JSON响应来做什么。 – 2012-04-02 01:02:24

+0

非常感谢您的帮助。你的例子很棒! – 2012-04-02 01:05:25