jquery和ajax结合的跨域接口调用问题 jquery跨域php 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ajax不支持跨域访问的,你这样写永远只会进入error。可能通过其它方式实现,google一下大把。 不会吧,我网上搜索到一堆可以跨域调用的例子,可是我用了都还是error 你这样的跨域最后结果要返回json类似的格式。你调试看看error 的错误。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title> 查询 </title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> <script type="text/javascript"> jQuery(document).ready(function() { $.ajax({ type: "get", async: false, data: { "postalcode": "10504", "country": "US" }, url: "http://www.geonames.org/postalCodeLookupJSON", dataType: "jsonp", jsonp: "callback", success: function(json) { var data = json.postalcodes[0]; for (var e in data) { alert(e + "--->" + data[e]) } }, error: function(XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); } }); }); </script> </head> <body> <a href="#" id="test_post"> 查询 </a> </body></html> 你这是调用接口吗 ? 接口不是这样传值的。131415161718192021<script type="text/javascript">$(function(){ $('#weatherBtn').click(function() { var wsUrl = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx"; var soap = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getWeather xmlns="http://WebXml.com.cn/"><theCityCode>南昌</theCityCode><theUserID></theUserID></getWeather></soap:Body></soap:Envelope>'; $.ajax({ url:wsUrl, type:'POST', dataType:'xml', data:soap, success:function(){ alert('success'); }, error:function() { alert('error'); } }); });}); </script> 输出error信息,看看是什么错误。如果后台返回的数据有问题,也会报error的。 AJAX没办法跨域访问,但是可以用JSONP的方法,就是规定返回的JSON格式特殊处理一下,然后eval为java script对象。 楼上几位的方法都试过了,结果一样,error里返回的信息如下:{"readyState":4,"status":200,"statusText":"success"} 请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?现在是简单的用分隔符分隔的普通字段。 不会吧。5楼的方法我刚试过,可以success 的。你浏览器调试看下回调函数是否执行。jsonp 返回的是json 格式 的。Get 方式。 请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?现在是简单的用分隔符分隔的普通字段。肯定得改成符合JSONP的才可以跨域访问。 听好这几句话 首先ajax跳进你本地controll中 本地写个接口 然后httpclint socket 发请求报文进你那个跨域url 接收相应报文 解析报文 controll中出json形式进ajax回调函数 全部搞定!不明白的留言 五楼的方法可以,只是后台代码需要有所区别,见:http://www.open-open.com/lib/view/open1334026513327.html你调用别人的接口,个人认为你改不了别人后台方法,所以ajax调用自己的后台方法,在后台方法里在用其他方法调用别人的接口 不用jsonp也可以。写一个servlet,设置response.setHeader("Access-Control-Allow-Origin", "*");也行。 关键我回传的数据不是json格式的,对方接口问题,我不能修改。 那么你尝试后台获取它的数据 可以 HttpClient ,然后自己再解析吧。 后台写个方法然后前台自己定义个ajax 调用一样的,//需要htmlparser.jarString path="http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US";Parser parser=new Parser(path);parser.setEncoding("utf-8");NodeList list=parser.parse(null);System.out.println("<---->");System.out.println("<---->"); 大神,你太牛了,在server端进行修改response.writeHead(200, {'Content-Type': "application/json; charset=utf-8","Access-Control-Allow-Origin": "*"});就可以了 一个正则解析html问题,请相助! tomcat下如何部署web程序 struts2 标签文本框怎么取出对象? 一个我无法看懂的错误 希望高手帮帮忙 ajax和取值的问题 有什么办法让服务器上的PDF能让用户看,但是就算下载下来也打不开 myeclipse打断点问题 急症成都地区网络开发高手!!! 连sqlserver 出错。我下载的 SQLServer 2000 Driver for JDBC sp1. 执行任何sql语句出错。 jquery.from.js提交表单不选择文件报400 ie9,10下的js问题 DWR PUSH 如何指定用户推动
可能通过其它方式实现,google一下大把。
不会吧,我网上搜索到一堆可以跨域调用的例子,可是我用了都还是error
transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>
查询
</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">
</script>
<script type="text/javascript">
jQuery(document).ready(function() {
$.ajax({
type: "get",
async: false,
data: {
"postalcode": "10504",
"country": "US"
},
url: "http://www.geonames.org/postalCodeLookupJSON",
dataType: "jsonp",
jsonp: "callback",
success: function(json) {
var data = json.postalcodes[0];
for (var e in data) {
alert(e + "--->" + data[e])
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(textStatus);
} }); });
</script>
</head>
<body>
<a href="#" id="test_post">
查询
</a>
</body></html>
14
15
16
17
18
19
20
21
<script type="text/javascript">
$(function(){
$('#weatherBtn').click(function() {
var wsUrl = "http://webservice.webxml.com.cn/WebServices/WeatherWS.asmx";
var soap = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><getWeather xmlns="http://WebXml.com.cn/"><theCityCode>南昌</theCityCode><theUserID></theUserID></getWeather></soap:Body></soap:Envelope>';
$.ajax({
url:wsUrl,
type:'POST',
dataType:'xml',
data:soap,
success:function(){
alert('success');
},
error:function() {
alert('error');
}
});
});
});
</script>
{"readyState":4,"status":200,"statusText":"success"}
请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?
现在是简单的用分隔符分隔的普通字段。
jsonp 返回的是json 格式 的。Get 方式。
请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?
现在是简单的用分隔符分隔的普通字段。
肯定得改成符合JSONP的才可以跨域访问。
五楼的方法可以,只是后台代码需要有所区别,见:
http://www.open-open.com/lib/view/open1334026513327.html
你调用别人的接口,个人认为你改不了别人后台方法,所以ajax调用自己的后台方法,在后台方法里在用其他方法调用别人的接口
关键我回传的数据不是json格式的,对方接口问题,我不能修改。
//需要htmlparser.jar
String path="http://www.geonames.org/postalCodeLookupJSON?postalcode=10504&country=US";
Parser parser=new Parser(path);
parser.setEncoding("utf-8");
NodeList list=parser.parse(null);
System.out.println("<---->");
System.out.println("<---->");
response.writeHead(200, {'Content-Type': "application/json; charset=utf-8","Access-Control-Allow-Origin": "*"});就可以了