单独js文件可以ajax,放到网页上就不行了。。什么情况?

发布于 2022-09-04 10:08:58 字数 936 浏览 7 评论 0

var ajax = require('../static/js/ajax.js');


// console.log(d);
ajax({
    url:"http://172.16.11.224:8080/data?",
    data: { client_id: '0008', time_stamp: parseInt((new Date().getTime()) / 1000),key:"increment_curve",sign:"hehe",name:"iscc" },
    method: 'GET',
    success:function (resp) {
        // Data = resp;
        console.log(resp.responseText);
        // display("XX");
    },
    error:function (err) {
        console.log(err)
    }
})

单独js文件 用node 运行 没有问题

但是 如果放到 html上,在浏览器上运行就会

clipboard.png

跨域了 我知道,但是我后端设置了

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

了的

用jQ没有问题,但是引入一个jq就为了ajax太大了,所以找了一个ajax库
https://github.com/bobiscool/...

求大家解答一些疑惑

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹤仙姿 2022-09-11 10:08:58

谢谢邀请~
抱歉 来晚了~
很明显 是跨域了
在ajax里边加上dataType:jsonp
代码贴给你:

$.ajax(
            {
                type: "post",
                url: "http://t1.loocha.cn:9880/link/anchor/finalcompetitor?activityId=40987",
                data: {},
                dataType: "jsonp",
                callback: "test",
                success: function (data) {
                  
                  }
                }
            }
        )

至于为什么跨域了
是因为违反了同源策略,所谓同源是指,域名,协议,端口相同。
而当我要访问 http://t1.loocha.cn:9880/link/anchor/finalcompetitor?activityId=40987时,我目前的地址是:

http://localhost:63342/exercise/%E7%BA%A2%E4%BA%BA%E7%9B%9B%E5%85%B8/index.html?_ijt=kraerct5vj8p4lu74rna1gd9jp

域名、协议、端口 都不相同 所以 根本没有办法交互。
解决这一问题有很多办法
鉴于你用的ajax 就直接加jsonp吧
请参考这个网址了解jsonp

与往事干杯 2022-09-11 10:08:58

根据报错来看不是前端的问题啊,form表单提交是可以直接跨域的,目测jq的ajax可能是模拟表单提交的,所以没有报跨域的错,而你用的ajax库则不是。

header('Access-Control-Allow-Origin:*'); 这个正确设置了,把你的网页放在服务器中去跨域,如果你是用本地文件打开,即地址栏是 file:// 开头的,也可能会影响(猜测)

橘和柠 2022-09-11 10:08:58

跨域了,自行去查跨域相关知识,html里是file协议,跨域问题,你在node里能用是因为有服务器环境

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文