【问题标题】:Ajax call subdomain to domainAjax 调用子域到域
【发布时间】:2012-08-06 10:50:58
【问题描述】:

我在使用 jquery 的 ajax 跨脚本请求时遇到了一些问题。 我在一个名为 test.example.com 的子域中,我正在像这样对 www.example.com/action 进行 ajax 调用:

$.ajax({ 
url:"http://www.example.com/action",
type:"post", 
crossDomain:true,
dataType:"jsonp",
jsonp:"cross_domain_action",
xhrFields:{withCredentials:true},
success:function(data){}
});

问题是我不知道如何在 www.example.com/action 中测试请求是否是 ajax 请求。

我正在使用 CakePHP 1.3,并且有一个组件调用“request_handler.php”的函数

function isAjax() {
    return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest";
}

我发现请求中没有那个HTTP头。

X-Requested-With    XMLHttpRequest

如果你有任何想法:) 谢谢

【问题讨论】:

  • 您可以在帖子中传递参数“ajax=true”。

标签: jquery ajax json cakephp-1.3 jsonp


【解决方案1】:

这正是您用来测试它是否是和 ajax 请求的方法。我通常使用:

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 
&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') 
{//this is an ajax request}

【讨论】:

  • 好吧,就是这样 :) 谢谢。但是请求中的HTTP头不包含X-Requested-With XMLHttpRequest是正常的吗
【解决方案2】:

您无需手动检查标题。 Cake 1.3 在控制器的$this->params 属性中提供了这些信息:

$this->params['isAjax']

如果当前请求是 ajax 调用,则存储 1,否则存储 0。检查它here。 .

【讨论】:

    猜你喜欢
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    相关资源
    最近更新 更多