使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据呢

说到这个跨域请求的问题,我之前也遇到过好几次,挺头疼的。
我们来分析一下这个问题。

首先,您提到创建 json_ajax。
和 json_ajax.php,并下载 jQuery.js。
这些都是基本操作,没有问题。
然后你提到分别在WAMP环境中运行这两个文件。
这一步也很关键,因为WAMP是搭建本地服务器的好帮手。

有趣的是,您提到在 json_ajax 中设置按钮的单击事件。
这就涉及到jQuery的ajax方法了。
我猜你可能在 json_ajax 中使用了 jQuery 的 $.ajax 来跨域发送请求,对吗?那么我们就来看看这个地方吧。

在 json_ajax.你可以看到这样的代码:
[xss_clean][xss_clean] <脚本> $(文档).ready(函数(){ $("btnGet").click(function(){ $.ajax({ 网址:“json_ajax.php”, 类型:“获取”, 数据类型:“jsonp”, 成功:函数(数据){ 控制台.log(数据); }, 错误:函数(){ console.log("发生错误!"); } }); }); }); </脚本>
然后,在json_ajax.php中,您可能需要设置一个标头以允许跨域请求:
php <?php header('访问控制允许来源:'); echo json_encode(array('message' => '你好,世界!')); ?>
这里的关键是您需要确保 Access-Control-Allow-Origin 标头在服务器端(即 php 文件)设置正确。
如果不设置,或者设置错误,浏览器会阻止跨域请求。

如果您按照上述步骤操作,但仍然无法检索数据,可能是由于以下几个原因造成的:
1 .检查文件 json_ajax.php 是否确实在响应中返回 JSON 数据。
您可以使用浏览器直接访问此文件以查看返回的内容。

2 检查jQuery的$.ajax方法的url是否正确。
该 URL 应该是 json_ajax.php 文件的地址。

3 确保您的WAMP服务器运行正常并且端口不忙。

4 如果您在本地进行开发,请确保您的浏览器和 WAMP 服务器防火墙设置不会阻止这些请求。

我自己没有运行过这个。
我记得数据大约是X,但我建议你检查上面的步骤。
如果问题仍然存在,可能是时候仔细查看您的配置和代码了。

jquery使用ajax请求接口的方法

哎呀,你说的太详细了。
当我用jQuery做AJAX的时候,我并没有那么关注。

当时,我还在一家外包公司做一个项目。
客户急得像热锅上的蚂蚁,坚持在一个老古董的系统上构建动态数据加载功能。
该系统采用PHP编写,运行在服务器上。
至于我,当时手边正好有一个jQuery库,版本好像是1 .8 .3 无论如何,那是旧的。

没有多想,直接在页面中添加了这个:
[xss_clean][xss_clean]
CDN真的很方便,你不用担心它是否存储在自己的服务器上。

然后编写AJAX请求。
当时我直接用$.ajax(),参数随便写一下,就行了。
客户端需要将用户名和密码传递给服务器进行验证,所以我这样写: javascript $.ajax({ url: 'http://1 9 2 .1 6 8 .1 .1 00/api/check.php', // 内网地址,客户端的服务器 类型:'发布', 数据:{用户名:'zhangsan',密码:'1 2 3 4 5 6 '}, 成功:函数(res){ console.log('成功', res); if (res.code == 1 ) { alert('登录成功'); } 否则{ alert('用户名和密码错误'); } }, 错误:函数(错误){ console.error('出了什么问题', err); alert('请求失败,尝试其他位置'); } });
当时我刚看了文档,上面是这么说的,所以就用了。
服务器端是PHP,返回一个简单的文本,比如“1 登录成功”或者“0用户名不存在”。
看控制台,确实可以打印。

后来客户又问,如果可以跨域怎么办? 我很困惑,谁在乎这个? 后来问了我们公司的技术老大,他说我们需要在服务器上加一个header,类似Access-Control-Allow-Origin之类的,我记不太清了。
不管怎样,只要改变客户这边的PHP代码,添加一个header('Access-Control-Allow-Origin: ');,嘿嘿,就这样了。

我也使用过 JSON。
后来客户端的接口改为返回JSON,所以我更改了$.ajax()中的dataType: javascript $.ajax({ url: 'http://1 9 2 .1 6 8 .1 .1 00/api/user.php', 类型:'获取', dataType: 'json', // 告诉 jQuery 我需要 JSON 成功:函数(数据){ console.log('成功', 数据); $('用户名').text(data.用户名); }, 错误:函数(错误){ console.error('出了什么问题', err); } });
这样你就不需要手动解析 JSON,jQuery 会自动为你解析。

哦,对了,项目要上线了,客户临时要求试试$.get()或者$.post()。
我也没多想,直接改了: javascript $.get('http://1 9 2 .1 6 8 .1 .1 00/api/user.php', {用户名: 'zhangsan'}, function(res) { console.log('成功', res); $('用户名').text(res.用户名); });
或者 javascript $.post('http://1 9 2 .1 6 8 .1 .1 00/api/login.php', {用户名: 'zhangsan', 密码: '1 2 3 4 5 6 '}, function(res) { console.log('成功', res); if (res.code == 1 ) { alert('登录成功'); } 否则{ 警报('失败'); } });
感觉和$.ajax()类似,只是更简单。
当时懒得看源码,只要能用就行。

反正jQuery的AJAX就是这么用的。
遇到过的坑就是跨域服务器配置,记得添加dataType自动解析JSON。
除此之外,没有什么大问题。
现在我不再使用jQuery,而是使用fetch或者axios,感觉简单多了。

jquery $.ajax post请求本地地址127.0.0.1 报错 拒绝访问

上周试过这个。
确实是有点麻烦。

$.ajax POST 1 2 7 .0.0.1 报告访问被拒绝。
一些常见问题。

1 .服务器没有启动。
或者端口错误。
例如,我在2 02 3 年3 月使用Express时,忘记监听3 000端口,请检查日志。
或者问同事。

2 .跨域。
1 2 7 .0.0.1 是本机,但浏览器认为不是同一个源。
您需要将 CORS 标头添加到您的服务器。
例如,Access-Control-Allow-Origin:'http://1 2 7 .0.0.1 :3 000'。
不要忘记添加它。
其他标头(例如方法和标头)也必须匹配。

3 .请求头不正确。
例如,假设您发送服务器不允许的标头。
检查 $.ajax 标头。
请删除或更改。

4 .浏览器问题。
缓存被删除了吗?请尝试更换浏览器。
那么互联网呢? DNS 和防火墙可能会导致问题。

我的朋友上次见到我,但如果你清除缓存应该没问题。
由你决定。