【问题标题】:AJAX call to server side function in javascript?AJAX 调用 javascript 中的服务器端函数?
【发布时间】:2016-07-29 04:19:56
【问题描述】:

我是 AJAX 新手,不太清楚如何使用 AJAX 调用的格式 例如

$.ajax({
    type: "POST",
    url: "Default.aspx/function",
    data: '{ searchBy: id }',
    contentType: "application/json; charset=utf-8"
}).success(function (result) {
    alert(result);
})

我在 .cs 文件中有一个函数,它应该接受一个字符串 ID 并返回包含该 ID 的所有对象的列表。
在将新对象插入数据库之前,我想在 javascript 中调用此函数以检查返回的列表是否为空(因此 ID 不存在)。
我该怎么做呢?
我看到的所有示例都从服务器端函数返回string

【问题讨论】:

  • 序列化是你的朋友。返回一些允许您解释数据是字符串、数字、数组、对象还是 null 的格式。有几种方法可以做到这一点。传统上,您会返回 XML(ajaX 中的 X)。现在大多数人都返回 JSON。
  • 您想检查success 回调中的列表是否为空?如果是这样,只需检查result === null ?
  • 你不能从javascript调用服务器上的函数,你只能访问一个URL。
  • @jonathanGB 这似乎是最有效的方式。我还不太清楚如何设置通话

标签: javascript jquery ajax


【解决方案1】:

如果您可以控制服务器端端点,则返回您想要指示不匹配的任何内容 - 空列表、null、空字符串等。然后在成功函数中检查。

注意dataType ajax 参数。这告诉 ajax 函数如何格式化响应以供您使用。如果您希望返回 JSON,请使用 dataType: json 并在 success 函数中检查空 json 数组 result.length === 0。在 null 或空字符串的情况下,使用dataType: text 并检查result == "null"result == ""。等等。

如果您无法控制服务器端,那么您将需要遵守服务器发回给您的任何数据。 dataType 仍然是关键。

【讨论】:

    【解决方案2】:
    [WebMethod]
    public static int function(int Id) 
    {
        return Id;
    }
    

    【讨论】:

    • 为什么返回int?
    【解决方案3】:

    如果你只需要使用ajax,最好的选择是XMLHttpRequest,是Vanilla JS,速度更快。

    如果您决定将 ajax 与 jquery 一起使用,则功能是:

    $.ajax({
        type: "POST",
        url: "Default.aspx/function",
        data: { searchBy: id },
        dataType: 'json',
        success: function(result) {
            // Do something
        }
    });
    

    【讨论】:

    • url: 字段的语法是什么? .aspx.页面是当前页面和函数名吗?
    • url可以是“url:a_cross_domain_url”或“url:'/Default.aspx/function'”,第二个选项,请求使用当前页面域。
    【解决方案4】:

    我从未使用过 C#,但您的 url 参数必须是文件路径(例如 url: Default.aspx)。在您的文件中,您应该具有处理请求并调用正确函数的逻辑。该函数将检查数据库,并打印结果。

    // inside Default.aspx
    // 1- is there a POST parameter? If so, call foo()
    
    public static string foo(string postParam) {
        // check DB, process
        Print(result)
    }
    

    在您的success 回调中,检查是否为空:

    .then(function(result) {
        if (result === null) // do stuff
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2011-12-09
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 2011-05-17
      相关资源
      最近更新 更多