Ajax 使用多个 Return 值调用服务
Ajax Call to Service with Multiple Return Values
我正在用 C# 构建一个 WCF 服务,我希望能够从我的一些函数中 return 多个值。下面的代码似乎是这样做的:
[WebMethod]
public void ReturnMultipleValues(int startingValue)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var jsonData = new { FirstValue = startingValue, SecondValue = startingValue * 2 };
Context.Response.Write(ser.Serialize(jsonData));
}
我正在尝试通过 JavaScript 代码中的 ajax 调用来访问此函数:
function runTestService() {
$.ajax({
type: "POST",
url: "http://localhost:12345/WebServices/MyService.asmx/ReturnMultipleValues",
contentType: "application/json;charset=utf-8",
data: "{ 'startingValue' : 6 }",
dataType: "json",
done: function(data) {
var firstValue = data.FirstValue;
var secondValue = data.SecondValue;
alert("First: " + firstValue + ", Second: " + secondValue);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("Error: " + errorThrown);
}
});
}
当我执行上面的JavaScript代码时,.done
部分的函数永远不会执行。但是,当我检查 Fiddler 时,我发现我的服务中的函数确实执行正确,并且 returned JSON.
中的正确值
有没有其他方法可以对服务或 ajax 调用进行编码?
您不应该自己给 Context.Response
写信。只需 return 来自方法的对象,让框架为您完成
[WebMethod]
public object ReturnMultipleValues(int startingValue)
{
var jsonData = new { FirstValue = startingValue, SecondValue = startingValue * 2 };
return jsonData;
}
并且您必须考虑以下事实:Web 服务将 json 响应包装在对象中 d
属性
{
"d": {
"FirstValue": 6,
"SecondValue": 12
}
}
所以也更新js
done(function (data) {
data = data.d;
var firstValue = data.FirstValue;
var secondValue = data.SecondValue;
alert("First: " + firstValue + ", Second: " + secondValue);
});
我正在用 C# 构建一个 WCF 服务,我希望能够从我的一些函数中 return 多个值。下面的代码似乎是这样做的:
[WebMethod]
public void ReturnMultipleValues(int startingValue)
{
JavaScriptSerializer ser = new JavaScriptSerializer();
var jsonData = new { FirstValue = startingValue, SecondValue = startingValue * 2 };
Context.Response.Write(ser.Serialize(jsonData));
}
我正在尝试通过 JavaScript 代码中的 ajax 调用来访问此函数:
function runTestService() {
$.ajax({
type: "POST",
url: "http://localhost:12345/WebServices/MyService.asmx/ReturnMultipleValues",
contentType: "application/json;charset=utf-8",
data: "{ 'startingValue' : 6 }",
dataType: "json",
done: function(data) {
var firstValue = data.FirstValue;
var secondValue = data.SecondValue;
alert("First: " + firstValue + ", Second: " + secondValue);
},
error: function(jqXHR, textStatus, errorThrown) {
alert("Error: " + errorThrown);
}
});
}
当我执行上面的JavaScript代码时,.done
部分的函数永远不会执行。但是,当我检查 Fiddler 时,我发现我的服务中的函数确实执行正确,并且 returned JSON.
有没有其他方法可以对服务或 ajax 调用进行编码?
您不应该自己给 Context.Response
写信。只需 return 来自方法的对象,让框架为您完成
[WebMethod]
public object ReturnMultipleValues(int startingValue)
{
var jsonData = new { FirstValue = startingValue, SecondValue = startingValue * 2 };
return jsonData;
}
并且您必须考虑以下事实:Web 服务将 json 响应包装在对象中 d
属性
{
"d": {
"FirstValue": 6,
"SecondValue": 12
}
}
所以也更新js
done(function (data) {
data = data.d;
var firstValue = data.FirstValue;
var secondValue = data.SecondValue;
alert("First: " + firstValue + ", Second: " + secondValue);
});