2011-02-22 56 views
1

我尝试后,像这样一个Ajax请求:jQuery的AJAX发布目录

$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      } 
}); 

当我使用此代码段POST请求不起作用,但如果我移动的文件上一级目录和使用:

$.ajax({ 
      url: 'file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      } 
}); 

然后它神奇地工作。

我曾尝试:

/directory/file.php和FULLPATH /目录/ file.php

我也包括在内的完整路径,当我提出这一个目录,它仍然工作。

我一定会看起来很简单,但我无法弄清楚。

+0

我没有看到任何错误,但你有没有尝试添加../../或../或/之前的网址? – Peter 2011-02-22 18:53:21

+0

是的,我尝试了所有这些。 – Melissa 2011-02-22 18:57:43

+0

在哪个目录是file.php? – Val 2011-02-22 19:02:58

回答

1

没有什么明显的错误用的代码块的,所以 问题必须在别处。在AJAX上工作时,如果 工作不正常,下面是我通常采取的一系列步骤,即 找出问题出在哪里。很多这是相当 明显,但我发现,一无所获, 系统验证每个反过来将通常帮助我 迅速解决问题。最后,我通常会使用Firebug参考 ,因为这是我的首选工具,但您可以使用其他工具轻松完成大部分工作。

首先,在使用AJAX代码时,我总是打开Firebug。 加载页面,并确保没有JavaScript语法页面本身可以防止事件处理程序 被有线等

下一页上 错误,我会修改代码,你给是以下:

alert('Running AJAX request'); 
$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       alert('Response received: ' + response); 
       $('#content').html(response); 
       alert('Document modified.'); 
      }, 
      error: function(req) { 
       alert('Error: ' + req.status); 
      } 
}); 

现在,当你触发AJAX请求,你应该得到足够的 信息会告诉你,在这个过程中得到的东西绊倒 起来。

如果您没有看到'正在运行AJAX请求',请检查应该触发您的请求的事件处理程序 。如果您看到 '错误:',请验证请求网址是否与您预期的一样 ,并且手动浏览到该网址会给出预期结果。

如果您看到'收到的回复:',但回复文本不是 您期望的是,再次尝试在您的 浏览器中手动浏览页面。如果您在浏览器中看到的内容和AJAX请求所看到的内容存在差异,请使用Firebug的网络 选项卡检查浏览器 和AJAX请求发送的参数之间的差异(例如,您可能需要附加 a AJAX请求中的会话标识符)。

如果所有的作品,但文件的修改不 发生如预期,然后用Firebug的DOM选项卡,以验证 文件ID被DOM和脚本之间的匹配,并 检查DOM看什么更改实际上是以$('#content')。html(response)行的 结果发生的。

1

尝试使用$ .ajax方法的“error”-callback并返回状态码。

$.ajax({ 
      url: 'directory/file.php', 
      type: 'POST', 
      data: 'param1=' + param1 + '&param2=' + param2, 
      success: function(response){ 
       $('#content').html(response); 
      }, 
      error: function(req, status, error) { 
         window.alert(req + "\n" + status + "\n" + error); 
        } 
}); 

有可能是与该目录中,这需要至少755你搭配chmod问题(一切,但只有组所有者可以写入)。在这种情况下,应该由jQuery返回403-HTTP-Status-Code。

这可能有助于发现错误。

0

我试过你的代码使用jquery 1.4.2它工作正常。所以除了也许你没有该文件夹的访问权限,或者你以某种方式混淆了目录结构。

尝试在您的浏览器中粘贴网址$ .ajax并查看它是否有效。

干杯

2

我最近有同样的问题。在玩过上面推荐的Firebug(欢呼声,btw!)后,我意识到问题在于.php文件中,而不是在JavaScript中。当我将一个文件夹移动到一个文件夹时,它不再像以前那样引用相同的文件夹和文件。

希望这可以帮助我从最近几个小时的头痛中解脱出来!