【问题标题】:Axios ajax call returns sometimes htmlaxios ajax 调用有时会返回 html
【发布时间】:2018-01-04 08:40:55
【问题描述】:

Vue.js 2 中,我正在使用 axios 进行 ajax 调用。一切正常。但是,当我进一步浏览一页然后返回进行 ajax 调用的页面时,ajax 调用突然返回 html 所以没有 json 对象。

这里会发生什么?当我在邮递员中测试 url 时,我也会收到 json 回复?

我的后端是用 laravel 5.5 制作的。

HTML 响应:

   <!DOCTYPE html>\n<!--[if IEMobile]><html class=\"no-js iemobile\" lang=\"nl\"><![endif]-->\n<!--[if lt IE 7 ]><html class=\"no-js ie6\" lang=\"nl\"><![endif]-->\n<!--[if IE 7 ]><html class=\"no-js ie7\" lang=\"nl\"><![endif]-->\n<!--[if IE 8 ]><html class=\"no-js ie8\" lang=\"nl\"><![endif]-->\n<!--[if IE 9 ]><html class=\"no-js ie9\" lang=\"nl\"><![endif]-->\n<!--[if (gte IE 9)|!(IE)]><!--><html class=\"no-js\" lang=\"nl\"><!--<![endif]-->\n<head>\n\t<!-- Google Tag Manager -->\n<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':\n        new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],\n        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=\n        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);\n    })(window,document,'script','dataLayer','GTM-TP9MVZN');</script>\n<!-- End Google Tag Manager -->\n    <meta data-required=\"true\" http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>\n\n<title>Televisies </title>\n\n<meta d…", status: 200, statusText: "OK", headers: {…}, config: {…}, request: XMLHttpRequest }

Vue.js 代码如下所示:

Axios.get(url, { params: params }).then((response) => {
           console.log(response);
});

在我的 app.js 文件中,我将标题设置为:

Axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

谢谢

【问题讨论】:

  • 检查网络标签,看看那里发生了什么。
  • 您可能会收到 html 格式的错误。您可以在此处发布响应正文吗?
  • 请看我上面的更新。
  • 在这里分享你的控制器代码

标签: javascript laravel vue.js axios


【解决方案1】:

我遇到了同样的问题并找到了解决方案。 Rails 正在缓存页面以减少返回时的请求量。

要禁用此行为,请参阅this post

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    • 2017-02-17
    • 2011-03-28
    • 1970-01-01
    相关资源
    最近更新 更多