解决方案 »

  1.   

    ajax不支持跨域访问的,你这样写永远只会进入error。
    可能通过其它方式实现,google一下大把。
      

  2.   


    不会吧,我网上搜索到一堆可以跨域调用的例子,可是我用了都还是error
      

  3.   

    你这样的跨域最后结果要返回json类似的格式。你调试看看error 的错误。
      

  4.   

    <!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>
      

  5.   

    你这是调用接口吗 ? 接口不是这样传值的。13
    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>
      

  6.   

    输出error信息,看看是什么错误。如果后台返回的数据有问题,也会报error的。
      

  7.   

    AJAX没办法跨域访问,但是可以用JSONP的方法,就是规定返回的JSON格式特殊处理一下,然后eval为java script对象。
      

  8.   

    楼上几位的方法都试过了,结果一样,error里返回的信息如下:
    {"readyState":4,"status":200,"statusText":"success"}
      

  9.   


    请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?
    现在是简单的用分隔符分隔的普通字段。
      

  10.   

    不会吧。5楼的方法我刚试过,可以success 的。你浏览器调试看下回调函数是否执行。
    jsonp 返回的是json 格式 的。Get 方式。
      

  11.   


    请教一下,因为接口不是我维护的,这种情况下是不是一定要接口配合修改,返回格式要符合json?
    现在是简单的用分隔符分隔的普通字段。
    肯定得改成符合JSONP的才可以跨域访问。
      

  12.   

    听好这几句话  首先ajax跳进你本地controll中 本地写个接口 然后httpclint socket 发请求报文进你那个跨域url  接收相应报文 解析报文  controll中出json形式进ajax回调函数 全部搞定!不明白的留言  
      

  13.   


    五楼的方法可以,只是后台代码需要有所区别,见:
    http://www.open-open.com/lib/view/open1334026513327.html
    你调用别人的接口,个人认为你改不了别人后台方法,所以ajax调用自己的后台方法,在后台方法里在用其他方法调用别人的接口
      

  14.   

    不用jsonp也可以。写一个servlet,设置response.setHeader("Access-Control-Allow-Origin", "*");也行。
      

  15.   


    关键我回传的数据不是json格式的,对方接口问题,我不能修改。
      

  16.   

    那么你尝试后台获取它的数据 可以 HttpClient ,然后自己再解析吧。
      

  17.   

    后台写个方法然后前台自己定义个ajax 调用一样的,
    //需要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("<---->");
      

  18.   

    大神,你太牛了,在server端进行修改
    response.writeHead(200, {'Content-Type': "application/json; charset=utf-8","Access-Control-Allow-Origin": "*"});就可以了