【问题标题】:jQuery get works but Axios doesntjQuery 得到了工作,但 Axios 没有
【发布时间】:2018-06-25 09:21:22
【问题描述】:

我正在向我的 PHP BE 发送一个简单的 get 请求,这些分别是我在 jQuery 和 Axios 中的请求:

$.ajax({
  url: "/?do=vueTestComponent-ReloadTime",
  success: (data) => console.log(data)
});

Vue.axios.get("/?do=vueTestComponent-ReloadTime").then((response) => {
  console.log(response)
})

其中 jQuery 正确返回并以代码 200 结束,而 Axios 错误返回并以代码 302 结束。

这就是我加载jQuery的方式:

<script src="{$basePath}/components/tinymce/tinymce.jquery.min.js" type="text/javascript"></script>

这就是我在 Vue 项目的 main.js 文件中加载 axios 的方式:

import axios from 'axios'
import VueAxios from 'vue-axios'

jQuery 的解析速度也更快。

我不知道我做错了什么,它们应该是相同的。是 jQuery/Axios 的细微差别吗?

【问题讨论】:

  • JSON.stringify(data) 是什么意思?见文档:axios.get(url, config)
  • 对不起@joaner,那是我试图调整标题,但应该没有必要,因为我也没有为 jQuery 调整它
  • 你能发布你加载 Axios 和 Jquery 的位置吗?
  • @RiadZT 我一个接一个地运行它们,但无论顺序如何,我都会得到相同的结果

标签: javascript jquery get axios


【解决方案1】:

axios默认跨站发送cookie,可能是响应302的原因。

参见withCredentials 选项:https://github.com/axios/axios#request-config

Vue.axios.get("/?do=vueTestComponent-ReloadTime", {
  withCredentials: true,
}).then(...)

【讨论】:

  • 不幸的是还是一样的结果:/
  • @Jousi 你可以比较两个请求的不同点,抱歉帮不了你。
【解决方案2】:

最后我发现,我需要在axios defaults 中指定,我的请求是XMLHttpRequest

所以我为请求实例创建了一个全局变量,实际上是XMLHttpRequest,现在设置如下:

window.axios_instance = Vue.axios.create({
  baseURL: '/'
});

window.axios_instance.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"

希望这对某人有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多