로 컬 페이지 에서 $. ajax 를 사용 하여 도 메 인 을 넘 어 웹 서비스 인터페이스 에 접근 하 는 문제

로 컬 페이지 에서 $. ajax 를 사용 하여 도 메 인 을 넘 어 웹 서비스 인터페이스 에 접근 합 니 다:
첫 번 째 예:
$.ajax({

type: 'GET',

url: 'http://www.pm25.in/api/querys/aqi_details.json?city=wenzhou&token=', 

dataType: 'jsonp',

success: function(msg){

alert(JSON.stringify(msg));

},

error:function(){

alert('error');

}

});

응답 데 이 터 를 성공 적 으로 출력 하기;
두 번 째 예:
$.ajax({

type: 'GET',

url: "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx/getWeatherbyCityName?theCityName=  ", 

dataType: 'jsonp',

success: function(msg){

alert('success');

},

error:function(XMLHttpRequest, textStatus, errorThrown){

alert('error');

}

});

출력 error.그러나 구 글 브 라 우 저의 디 버 깅 인터페이스 에서 다음 과 같은 화면 을 볼 수 있다.
 
 
응답 에 필요 한 데이터 가 포함 되 어 있 음 을 증명 합 니 다.문제 분석: dataType: 'jsonp', 되 돌아 오 는 데이터 형식 은 xml 입 니 다. 이것 은 실패 의 원인 일 수 있 습 니 다.그런데 왜 응답 에 필요 한 데이터 가 있 습 니까?이 데이터 들 은 어떻게 꺼 냅 니까?
 
질문 보충:
error 의 리 셋 함수 에서 textStatus 는 parsererror 이 고 error Thrown 은 리 셋 함수 가 실행 되 지 않 았 으 며 해석 이상 으로 확인 할 수 있 습 니 다.jsonp 에서 xml 데 이 터 를 처리 할 수 없 지 않 습 니까?
response 에 필요 한 데이터 가 있 으 니 추출 할 방법 이 있 겠 지?도대체 어떻게 찾 아야 하나 요?
    

        function jsonpCallback(result) {//       

            alert(result.msg);

            $("ws1").remove();//                 

        }

        $(function () {

            $.fn.getWS({ id: 'ws1', url: 'http://host:prot/ser.asmx/method', Callback: "jsonpCallback" });

        });

    

/ / 서버 에서 실행 해 야 할 동작 예제:
//[WebMethod]
public string method1()

{

    string str = "{\"msg\":\"       \"}";

   if (HttpContext.Current.Request["jsonp"] != null)//           JSONP        

    {

        HttpRequest Request = HttpContext.Current.Request;

        HttpResponse Response = HttpContext.Current.Response;

        string callback = Request["jsonp"];

        Response.Write(callback + "(" + str + ")");

        Response.End();//       ,           

    }

    return str;

}
(function ($) {

    //   DOM   ,           Value,Item    val  

    $.fn.getWS = function (options) {

        var defaults = {

            id: "",

            url: "",

            Callback: ""

        }

        var options = $.extend(defaults, options);

        var oHead = document.getElementsByTagName('HEAD').item(0);

        var oScript = document.createElement("script");

        oScript.type = "text/javascript";

        oScript.setAttribute("id", options.id);

        oScript.src = options.url + "?jsonp=" + options.Callback;

        oHead.appendChild(oScript);

    }

})(jQuery);

 
 
간단 한 호출 방법, Jquery 원본 방법:       
     $.ajax({

                type: "get",

                url: "http://localhost:17180/Service1.asmx/method1",

                dataType: "jsonp",

                jsonp: "jsonp", //             ,    jsonp         (   :callback)

                jsonpCallback: "jsonpCallback", //    jsonp      ,   jQuery          

                contentType: "application/json; charset=utf-8",

                success: function (json) {

                    alert(json.msg);

                },

                error: function () {

                    debugger;

                    alert('fail');

                }

            });

 
 

좋은 웹페이지 즐겨찾기