ajax跨域返回报错
A. 使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据呢
使用jquery的ajax的jsonp类型跨域请求数据、始终获取不到返回数据是设置错误造成的,解决方法为:
1、创建基本的文件结构json_ajax.html和json_ajax.php,下载jquery.js。
注意事项:
jQuery的核心特性可以总结为:具有独特的链式语法和短小清晰的多功能接口;具有高效灵活的css选择器,并且可对CSS选择器进行扩展;拥有便捷的插件扩展机制和丰富的插件。jQuery兼容各种主流浏览器,如IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等。
B. AJAX跨域请求/异步请求,怎么样获取返回值
若是用jq,
$.ajax({
url:"",
success:function(res){
console.log(res)//这里的res就是返回值
}
});
若不是jq自己就写个ajax,
function ajax(url,succ) {
var aj=window.XMLHttpRequest?new XMLHttpRequest():new ActiveXObject("Microsoft.XMLHTTP")
aj.open("get", url, true)
aj.send();
aj.onreadystatechange = function() {
if(aj.readyState == 4&&aj.status==200&&succ) {
succ(aj.responseText)
}
}
}
//aj.responseText就是返回值。
C. 如何解决ajax跨域问题
1、什么是跨域
跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议、域名、端口)的内容(参考js的同源策略)。
但是我们项目开发过程中,经常会遇到在一个页面的JS代码中,需要通过AJAX去访问另一个服务器并返回数据,这时候就会受到浏览器跨域的安全限制了。
这里要注意,如果只是通过AJAX向另一个服务器发送请求而不要求数据返回,是不受跨域限制的。浏览器只是限制不能访问另一个域的数据,即不能访问返回的数据,并不限制发送请求。
2、跨域解决方案
jsonp
Web页面上调用js文件时不受是否跨域的影响,凡是拥有"src"这个属性的标签都拥有跨域的能力,比如<script>、<img>、<iframe>。那就是说如果要跨域访问数据,就服务端只能把数据放在js格式的文件里。恰巧我们知道JSON可以简洁的描述复杂数据,而且JSON还被js原生支持,所以在客户端几乎可以随心所欲的处理这种格式的数据。然后客户端就可以通过与调用脚本一模一样的方式,来调用跨域服务器上动态生成的js格式文件。客户端在对JSON文件调用成功之后,也就获得了自己所需的数据。这就形成了JSONP的基本概念。允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了。
三步走:创建script、指定src,插入到文档。
jQuery支持JSONP的调用。在另外的一个域名中指定好回调函数名称,就可以用下面的形式来就加载JSON数据。
jQuery.getJSON(url + "&callback=?", function(data) {
alert(data.a + data.b);
});
服务端当然也要提供JSONP的支持,其实只要提供读写callback这个params就可以了。
跨域资源共享(CORS)
Cross-Origin Resource Sharing (CORS) 是W3c工作草案,它定义了在跨域访问资源时浏览器和服务器之间如何通信。CORS背后的基本思想是使用自定义的HTTP头部允许浏览器和服务器相互了解对方,从而决定请求或响应成功与否。
CORS与JSONP相比,更为先进、方便和可靠。
1、 JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求。
2、 使用CORS,开发者可以使用普通的XMLHttpRequest发起请求和获得数据,比起JSONP有更好的错误处理。
3、 JSONP主要被老的浏览器支持,它们往往不支持CORS,而绝大多数现代浏览器都已经支持了CORS。
对一个简单的请求,没有自定义头部,要么使用GET,要么使用POST,它的主体是text/plain,请求用一个名叫Orgin的额外的头部发送。Origin头部包含请求页面的头部(协议,域名,端口),这样服务器可以很容易的决定它是否应该提供响应。
服务器端对于CORS的支持,主要就是通过设置Access-Control-Allow-Origin来进行的。
Header set Access-Control-Allow-Origin *
为了防止XSS攻击我们的服务器, 我们可以限制域,比如
Access-Control-Allow-Origin: http://blog.csdn.net
很多服务都已经提供了CORS支持,比如 AWS 支持跨域资源分享功能CORS,向S3上传不需要代理。
D. 用$.ajax jsonp跨域取值,能返回取值内容但是火狐报错SyntaxError: illegal character
您好!很高兴为您答疑!
SyntaxError: illegal character此错误提示出现在您使用了错误的特殊字符,如单引号、双引号之类使用了双角字符等,请您仔细检查您的输入是否有误,修正后即可。
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
E. 关于jquery ajax跨域返回数据的问题,服务器端是.net的页面
返回格式不对,要返回jsonp格式
在服务端
先接受callback: string callback = Request["callback"];
返回的时候需要吧callback带上
例:
Response.Write(callback+"("+sjson+")");//sjson为json格式的数据
Response.End();
F. ajax跨域访问,传值,返回值等问题
$.get(
"list.action",//这个是执行的action,再xml配置。
{
selected:"#select option:selected").val(),time:new Date().getTime()//selected这个变量需要在action有对应的set和get方法,后面的时间是防止浏览器读取缓存信息,如单次刷新操作可省略。
},
function(data){
data返回一个json对象,如action中有一个address的对象,address有一个phone属性,
这里这样获取:data.address.phone
}
)
注意:在xml配置文件中格式,双引号里内容你自己加。reuslt的返回jsp不写,type类型必须写json
<action name="" class="">
<result name="" type="json"></result>
</action>
这个data就是返回值
G. jquery ajax跨域请求 返回数组 报parsererror错误
这种情况我也遇到过,我之前也是需要跨域提交一个ajax请求实现新增数据,由于另一个系统的方法已固定,无法修改返回值。最后果断放弃了ajax的jsonp跨域这种方式,改用httpClient代理,在后台代理http发送请求。你可以试试
H. ajax跨域请求 status为200为什么会错误回调
status为http请求状态码,当200<=status<300则代表请求已成功被服务器接收、理解、并接受,当status==200则说明请求已成功,请求所希望的响应头或数据体将随此响应返回。
所以当你status==200的时候,你应该执行的业务逻辑是拿到后台服务器返回给你的数据(this.responseText)。之后你的业务就是解析后台返回过来的数据。
至于为什么会错误回调,由于你并没有把代码贴出来,我也不知道。
望采纳
I. ajax跨域的返回值怎么输出
因为安全限制,ajax的POST方法是不支持跨域的。所以你可以通过get方法进行跨域请求。也可以通过
J. ajax跨域请求返回200但是没有数据
jsonp 跨域 需要前后端都做出更改
前端 使用jquery 的 ajax 用jsonp的话 要将dataType 设置为jsonp
后端需要把返回的数据包装一下 包装成前端可识别的数据才行