如何将id从webmethod中的函数返回到javascript代码

Posted

技术标签:

【中文标题】如何将id从webmethod中的函数返回到javascript代码【英文标题】:How to return id from function in webmethod to javascript code 【发布时间】:2020-11-08 17:25:29 【问题描述】:

我有这个 javascript 函数来使用 JSON 插入数据

function Create(Name,Description) 
    var obj = ;
    obj.Name = Name;
    obj.Description = Description;
    $.ajax
        (
            type: "Post",
            url: "/test.asmx/Create",
            dataType: 'JSON',
            contentType: "application/Json; Charset= Utf-8",
            data: JSON.stringify(obj),
            success: function () 
                alert("Great");
            ,
            error: function (response) 
                alert(response);
            
        );

这是我的 WebMethod 在我的网络服务中,我需要获取插入到我的 javascript 代码中的数据 ID

[WebMethod]
public int Create(string Name, string Description)

    try
    
        var Qer = new DAL.MOD.TABLE1
        
            kName = Name,
            Description = Description
        ;
        t.Create(Qer);
        return Qer.Id;
    
    catch
    
        return -1;
    

有人对如何实现这一点有任何建议吗?

【问题讨论】:

那么你需要在 JavaScript 中获取你从服务返回的 Qer.Id 吗? @prathameshk73 是的 【参考方案1】:

如果ajax调用且web方法运行正常,则可以通过ajax代码的success函数访问结果;

 success: function (result) 
                                alert(result);
                            ,

在上面的sn-p中,result参数应该是从web方法返回的Id值。

【讨论】:

【参考方案2】:

您可以在 ajax 成功 函数中访问 Id。如果它进入错误功能,那么您需要检查您的服务。

function Create(Name,Description) 
                var obj = ;
                obj.Name = Name;
                obj.Description = Description;
                $.ajax
                    (
                        type: "Post",
                        url: "/test.asmx/Create",
                        dataType: 'JSON',
                        contentType: "application/Json; Charset= Utf-8",
                        data: JSON.stringify(obj),
                        success: function (response) 
                          if (response) 
                            // Query Id
                            alert(response);
                          
                        ,
                        error: function (response) 
                            alert(response);
                        
                    );
            

【讨论】:

尝试使用 console.log(response) 代替警报。您应该会在控制台中看到 Id。 jquery 返回一个 xhr 对象。您不能只显示或使用对象作为响应。您必须使用重新调整的对象的 .d 方法来根据我下面的回复提取数据。即使您将响应类型设置为文本,仍然会返回一个 xhr 对象,您仍然需要使用 xhr 对象的 .d 方法来获取返回的数据。【参考方案3】:
function Create(Name,Description) 
                var obj = ;
                obj.Name = Name;
                obj.Description = Description;
                $.ajax
                    (
                        type: "Post",
                        url: "/test.asmx/Create",
                        dataType: 'JSON',
                        contentType: "application/Json; Charset= Utf-8",
                        data: JSON.stringify(obj),
                        success: function (response) 
                            alert(response.d);
                        ,
                        error: function (response) 
                            alert(response);
                        
                    );
            

【讨论】:

【参考方案4】:

好的,正如其他人所说,您需要创建/设置/拥有一个在异步调用完成时被回调的函数。您可以使用内联函数()并且效果很好。所以一个全新的 function() 是动态创建的。

下一个? 您不能只使用“响应”,而必须使用“.d”作为数据。

因此这将起作用:

   $.ajax(  
        type: "POST",  
        url: 'WebForm1.aspx/HelloWorld',
        contentType: "application/json",  
        datatype: "json",  
        success: function(responseFromServer)   
            alert(responseFromServer.d)  
          
    );  
  

注意 .d 以从响应对象中获取数据。

如果你返回两个值呢? 这么说:

[WebMethod()]
public static string[] HelloWorld()

string[] twovalues = new string[2];
twovalues[0] = "This is the first return value";
twovalues[1] = "This is the second return value";

return twovalues;

所以,现在你可以像这样得到两个返回值:

   $.ajax(  
        type: "POST",  
        url: 'WebForm1.aspx/HelloWorld',
        contentType: "application/json",  
        datatype: "text",  
        success: function(responseFromServer)   
            alert(responseFromServer.d[0]);
            alert(responseFromServer.d[1]);
          
    );  

所以响应是一个返回的对象。您使用响应对象的“.d”方法来获取数据。并且如上所述,如果返回的值超过一个,那么您可以使用 [] 数组引用来提取/获取每个返回的值。

【讨论】:

以上是关于如何将id从webmethod中的函数返回到javascript代码的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?

Web 服务将 id 发送到另一个源并返回信息

如何在 asp.net 中使用 JSON 和 JQuery 从 WebMethod 返回 DataTable?

如何将多个文件名从输入类型文件传递到 Web 方法

C#怎么从http上返回JSON数据并读取?

如何从 vb.net 中的 aspx.vb 页面调用 webmethod