根据WebMethod中提供的条件从WebMethod返回一个值
本文关键字:WebMethod 一个 返回 条件 根据 | 更新日期: 2023-09-27 18:13:15
我有一个jQuery Ajax WebMethod调用,如下所示:
<script type="text/javascript">
$(document).ready(function () {
$("#btnsubmit").click(function () {
var arr = new Array();
arr.push($("#control1").val()); arr.push($("#control2").val()); arr.push($("#control13 option:selected").val()); arr.push($("#control4 option:selected").val()); arr.push($("#control15 option:selected").val());
var requestedData = JSON.stringify(arr);
requestedData = "{'details':'" + requestedData + "'}";
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "EmployeeDemotion.aspx/Save",
data: requestedData,
dataType: "json",
success: function (result) {
//check the value returned from the WebMethod and provide alerts accordingly
},
error: function (result) {
alert("Error");
}
});
});
});
</script>
, WebMethod如下:
[WebMethod(EnableSession = true)]
public static InsertDetails[] Save(string details)
{
DataTable dt = new DataTable(); DataTable dts = new DataTable();
List<InsertDetails> data = new List<InsertDetails>();
JavaScriptSerializer js = new JavaScriptSerializer();
string[] Tags = js.Deserialize<string[]>(details);
object[] obj = new object[8];
obj[0] = Tags[0].ToString(); obj[1] = Tags[1].ToString(); obj[2] = Tags[2].ToString(); obj[3] = Tags[3].ToString();
obj[4] = Tags[4].ToString();
int a = //say condition 1
int b = //say condition 2
if (a< b)
{
//insert into database and set a value which says the insertion has succeeded
}
else
{
//alert that data cannot be inserted
}
return data.ToArray();
}
现在我需要任何可能类型的值(布尔值,数组,字符串,整数或其他)返回给ajax方法,以便ajax方法中的成功函数警告插入状态(如代码片段中所述);应该将一个值与最后一条语句"return data.ToArray();"一起返回给ajax方法。我不要求返回元素'data',验证插入的值应该与'data'一起返回或以任何其他形式返回。
不确定你想要什么。您是否希望将数据和标志都返回给客户端函数,或者只是将标志返回给客户端函数
-
情况1:您想要的只是返回关于在
save
内部发生的操作的消息就像这样改变你的保存方法
[WebMethod(EnableSession = true)] public static string Save(string details) { string message =string.Empty; /// rest of the usual code of yours /// if (a< b) { //rest of the code message = "Insertion Successful"; } else { //rest of the code message = "Error Occured"; } }
和在您的客户端ajax
success
里面,简单这样做:success: function (result) { alert(result.d); }
-
情况2:如果插入成功,您也想发送数据
创建一个包装器,并将数据和标志都附加到其中。序列化它然后将其发送到客户端函数。即
//wrapper class public class ServiceResponse { public bool IsSuccess {get;set;} public string Message {get;set;} }
现在在你的
save
里面做这个:[WebMethod(EnableSession = true)] public static string Save(string details) { ServiceResponse serviceResponse =new ServiceResponse(); /// rest of the usual code of yours /// if (a< b) { //rest of the code serviceResponse.IsSuccess= true; serviceResponse.Message = String.Join(",",data.ToArray()); } else { //rest of the code serviceResponse.IsSuccess = false; } return new JavaScriptSerializer().Serialize(serviceResponse); }
并在客户端方法中使用它,如:
success: function (result) { var jsonData = $.parseJSON(result.d); if(jsonData.IsSuccess){ alert('success'); grid.data(jsonData.Message); } else{ alert('failure'); } }