gpt4 book ai didi

c# - 根据 WebMethod 中提供的条件从 WebMethod 返回一个值

转载 作者:行者123 更新时间:2023-11-30 20:57:50 26 4
gpt4 key购买 nike

我有一个 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();
}

现在我需要将任何可能类型( bool 值、数组、字符串、整数或其他)的值返回给 ajax 方法,以便 ajax 方法中的成功函数提醒插入状态(如代码片段中所注释) ) IE;一个值应该与最后一条语句“return data.ToArray();”一起返回到ajax方法。我不要求返回元素“数据”,验证插入的值应与“数据”一起返回或以任何其他形式返回。

最佳答案

不知道你想要什么。您是希望将数据和标志都返回给客户端函数,还是只返回标志。

  • 情况 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');
    }
    }

关于c# - 根据 WebMethod 中提供的条件从 WebMethod 返回一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16525321/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com