使用jQuery jsonp跨域请求到远程ASP.NET Web服务

时间:2013-01-09 05:30:19

标签: jquery web-services jsonp

这里我以json格式给出输入。但是我没有得到输出。任何人都可以解决这个问题。

我对jsonp有一些疑问:

1)我怀疑是否需要使用jsonp调用远程Web服务,我们是否必须以json格式或查询字符串格式发送数据。

2)如果我们访问url并输入输入,那么我们将获得xml格式的o / p。所以我只想知道jsonp是否不适用于将xml作为输出的webservices。

 <html xmlns="http://www.w3.org/1999/xhtml">
  <head runat="server">
<title></title>
<script src="Scripts/jquery-1.7.min.js" type="text/javascript"></script>
<script type="text/javascript">
function myQuerySuggestions() {
    var searchText = document.getElementById('txtsearch').value;
                searchText = "'" + searchText + "'";
                var jasonData = "{" + 'Celsius:' + searchText + "}";
    $.ajax({
        url: "http://www.w3schools.com/webservices/tempconvert.asmx/CelsiusToFahrenheit",
        dataType: "jsonp",
        crossDomain: true,            
        data:jasonData,
        jsonpCallback: blah,
        contentType: "application/json; charset=utf-8",
        success: function (data, status) {
            alert(status+" status");
        },
        error: function () { alert("error"); }
    });

}
function blah(data) {
   alert("called");
   alert(data);
   // var result = (typeof data.d) == 'string' ? eval('(' + data.d + ')') : data.d;
   // $('#summary').html('<p>All new content. <em>You bet!</em></p>');
   // $('#summary').html(result);
}

</script>
</head>
<body>
<form id="form1" runat="server">
 <div>
<label for="txtsearch">
    Enter country:
</label>
<input type="text" id="txtsearch" size="43" style="font-size: 12px; font-weight: bold;" />
<br />
<asp:Button ID="btn" runat="server" Text="Submit" OnClientClick="myQuerySuggestions();return false;" />
<div id="summary" runat="server"></div>
</div>
 </form>
</body>
    </html>

2 个答案:

答案 0 :(得分:0)

无论您调用什么服务,都应返回JSONP for Ajax调用dataType: "jsonp"才能正常工作。

XML响应不是JSONP响应 - 没有魔术转换从一个到另一个。

答案 1 :(得分:0)

编辑程序代码..这段代码工作正常。但我调用的服务不会返回JSONP进行Ajax调用。所以此代码的输出将是未定义的。