【问题标题】:full URL path in ajaxajax 中的完整 URL 路径
【发布时间】:2012-07-26 16:16:13
【问题描述】:

可以把完整的 URL 路径放在 ajax 中吗?我在访问 url 时遇到问题,我的错误响应状态为 0。

    $.ajax({
        url: "http://fullurlpath.com/php/myphppagedata.php",
        type: "GET",
        data:  "somedata="+somedata,
        error: function(XMLHttpRequest, textStatus, errorThrown) {
             alert(XMLHttpRequest.responseText);
        }
    }).error(function(xhr){
             alert(xhr.responseText);
             alert(xhr.status);
    }).done(function(data){
             alert(data);
    });

另外,在我的 http://fullurlpath.com/php/myphppagedata.php 我有

header('Access-Control-Allow-Origin: *');

【问题讨论】:

  • @Musa,我尝试使用相对路径,但我收到 404 错误,我假设它没有获取 URL。这让我很困惑,因为我在 js 文件夹中有这组代码,而 myphppagedata.php 在 php 文件夹中。所以我会做../php/myphppagedata.php
  • @ExplosionPills 我正在通过不同的域访问它,这就是我尝试使用完整路径的原因。但我刚刚获得状态 0
  • 另外,我要添加$.support.cors = true;
  • 您不能对域以外的域进行 Ajax 调用,浏览器会阻止这些调用。有一些变通方法,比如 jsonp(jQuery 支持)。

标签: php jquery ajax header http-headers


【解决方案1】:

我会在您自己的域上创建一个页面,而不是使用 jQuery 在您的客户端浏览器中请求它,例如将其称为 request.php 并使用:

echo file_get_contents("http://fullurlpath.com/php/myphppagedata.php");

这样,您的服务器将请求资源,这样您就不会遇到同源策略问题。然后 ajax 这个文件。

$.ajax({
    url: "request.php", 
...

您还可以使用cURL 代替file_get_contents() 以获得更详细的功能。

【讨论】:

  • 我仍然需要 "fullurlpath.com/request.php" 因为这个 ajax 在不同的域中被调用。没有?
  • 没有。这就是重点。 request.php 应该与调用 ajax 的文件在同一个域中。
【解决方案2】:

【讨论】:

  • @andrewliu 在浏览器中转到http://fullurlpath.com/php/myphppagedata.php 会发生什么?无论您使用 ajax 还是任何其他客户端(例如 Web 浏览器),目标 URL 都应该可以正常工作。
  • 当我使用http://127.0.0.1/php/myphppagedata.php 时,它确实有效。但我从不同的域访问了它。我现在正在尝试做同样的事情,但不是本地主机,而是我的文件在一个实际的托管位置。
猜你喜欢
  • 2013-04-23
  • 1970-01-01
  • 2011-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2014-07-03
  • 2010-11-22
相关资源
最近更新 更多