我正在尝试使用jQuery调用Web服务。由于某种原因,结果以XML格式返回...除了自己编写解析器之外......还有更好的方法来获得结果。
这是返回的价值:
<?xml version="1.0" encoding="utf-8"?>\r\n<string xmlns="http://tempuri.org/">"Hello World"</string>
这是HTML:
<script type="text/javascript">
var url = '<%=ResolveUrl("~/Services/ProjectDialog.asmx/HelloWorld")%>';
function callWebService() {
jQuery.ajax({
cache: false,
type: 'POST',
complete: onComplete,
data: null,
dataType: 'application/json; charset=utf-8',
error: onError,
success: onSuccess,
url: url
});
}
function onComplete(status, xmlHttpRequest) {
var stop = "";
}
function onError(xmlHttpRequest, status, error) {
var stop = "";
}
function onSuccess(data, status, xmlHttpRequest) {
var stop = "";
}
jQuery(document).ready(function() {
});
</script>
<input type="button" value="Run Web Service" onclick="callWebService();" />
这是网络服务:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Script.Serialization;
namespace My.Services
{
/// <summary>
/// Summary description for ProjectDialog
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class ProjectDialog : System.Web.Services.WebService
{
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
}
答案 0 :(得分:0)
您需要将ScriptMethodAttribute
应用于您的网络服务并指定ResponseFormat(json是默认设置)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string HelloWorld()
{
return "Hello World";
}
这很可能是您最好的结果,因为您似乎希望根据.ajax()
电话以json的形式请求数据。 注意根据jQuery docs,dataType应该只是json
。
可以进行不同的数据处理 通过使用dataType选项实现。 除了普通的xml,dataType也可以 html,json,jsonp,script或text。
<强>更新强>
如果您正确指定contentType
,您似乎会得到有效的json
响应。
jQuery.ajax({
cache: false,
type: 'POST',
complete: onComplete,
data: null,
contentType: "application/json; charset=utf-8",
dataType: 'json',
error: onError,
success: onSuccess,
url: url
});
答案 1 :(得分:0)
我可以想到在这种情况下有用的三个选项 -
在Web服务的方法中包含此属性(以JSON而不是XML的形式返回) -
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
或Parse the XML在客户端
或者使用IHttpHandler而不是Web服务。它们使用起来既简单又容易。