【问题标题】:Some Parameters in $.ajax not passing$.ajax 中的某些参数未通过
【发布时间】:2009-04-07 10:07:25
【问题描述】:

我有这个功能

$.ajax({
    url: aurl,
    method: 'GET',
    beforeSend: function (req) { req.setRequestHeader('Authorization', auth); },
    cache: false,
    dataType: "json",
    error: function () {
        //error code
    },
    success: function (t) {
        //success code
    }
});

但是,参数:

  • 方法
  • 发送前
  • 缓存

被我的浏览器 FF3、IE8 和 Chrome 忽略。因此,放在那里的任何内容都不会改变浏览器向给定 url 发送的请求,例如:不能将方法设置为“POST”,或者更重要的是,不能将授权参数作为请求的一部分放置,以便 HTTP 授权表单已处理。

另一个奇怪的行为是,除非 数据类型:“json” 如 FF3 中使用 LiveHTTPHeaders 所示,将不会发送或接收任何请求或响应。例如,如果 dataType:"xml".

浏览器似乎正确处理了 URL。

遇到这些问题的人,如何确保发送这些额外参数?

【问题讨论】:

    标签: jquery ajax json authorization


    【解决方案1】:

    URL 是远程的还是本地的?

    根据JQuery Documentation

    注意:当'script''jsonp'dataType 时,所有远程(不在同一个域中)请求都应指定为GET(因为它使用DOM 脚本标签加载脚本)。需要 XMLHttpRequest 对象的 Ajax 选项不适用于这些请求。 complete 和 success 函数在完成时调用,但不接收 XHR 对象;不调用 beforeSenddataFilter 函数。

    对于cache 选项,默认值为:“dataType 'script' 和 'jsonp' 的 false”

    【讨论】:

    • 谢谢,需要的数据类型是json。 URL是远程的,所以我想我要设置的选项不可用。
    • 我将研究 $.get() 和 CURL。这里对于 $.get 它说“返回 XMLHttpRequest”tr.im/imZl
    • 我认为这个限制是出于安全原因,还没有真正将它用于远程 url ..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2016-01-11
    • 2021-06-18
    • 1970-01-01
    • 2013-07-26
    相关资源
    最近更新 更多