【问题标题】:How to POST Array to Web Service with AJAX如何使用 AJAX 将数组发布到 Web 服务
【发布时间】:2016-04-12 10:29:50
【问题描述】:

我正在开发 Google Chrome 扩展程序。我有字符串数组,我需要使用 ajax 将我的数组发布到 Web 服务并再次返回。这是我的代码:

 var data = {};
data.param1 = words; // my string array

$.ajax({
    data: JSON.stringify( data ),
    dataType: "json",
    url: 'http://localhost:49242/Service.asmx',
    type: "POST",
    contentType: "application/json; charset=utf-8",
    success: function (result) {
        alert("basarili");
    },
    failure: function(errMsg) {
    alert(errMsg);
}
});

服务:

public string example(string[] param1) {

        string result = param1[0];
        return result;
    }

我没有收到错误,但此代码不起作用。我该如何解决?

【问题讨论】:

  • 你有没有一步步调试你的代码?你有看到你发送什么,你得到什么?
  • 你的意思是param1[""param1"]?

标签: jquery asp.net ajax web-services google-chrome-extension


【解决方案1】:
var data = {};
data.param1 = words; // my string array

$.ajax({
    data: {param1: data.param1},
    url: 'http://localhost:49242/Service.asmx',
    type: "POST",
    success: function (result) {
        alert("basarili");
    },
    failure: function(errMsg) {
        alert(errMsg);
    }
});

【讨论】:

    【解决方案2】:

    在服务文件中返回字符串时尝试使用Json Encode

    【讨论】:

    • 你能写个例子吗?
    • 例如,在您的服务文件中,您可以将字符串转换为 JSON 格式,然后返回。公共字符串示例(字符串 [] 参数 1){ 字符串结果 = 参数 1 [0]; var serializer = new JavaScriptSerializer(); return serializer.Serialize(new { Name = result }); } 希望这对你有帮助。
    【解决方案3】:

    我在

    中给出了类似的答案

    Link

    根据我的观察

    var data = {};
    data.param1 = ["String1","String2"]; // my string array
    
    $.ajax({
        data: JSON.stringify( data ),
        dataType: "json",
        url: 'http://localhost:49242/Service.asmx/example',//Missing Method Name 
        type: "POST",
        contentType: "application/json; charset=utf-8",
        success: function (result) {
            alert(result.d);
        },
        failure: function(errMsg) {
        alert(errMsg);
    }
    });
    

    和.aspx

      <form id="form1" runat="server">
        //rest is omitted 
        <asp:scriptmanager ID="Scriptmanager1" runat="server">
            <Services>
                <asp:ServiceReference runat="server" Path="~/WebService1.asmx"/>
    
            </Services>
    
        </asp:scriptmanager>
        </form>
    

    [System.Web.Script.Services.ScriptService]//This is must
    public string example(string[] param1) {
    
            string result = param1[0];
            return result;
        }
    

    【讨论】:

    • 我没有网络表单 (.aspx) 。有问题吗?
    • 我在 jQuery 中进行了测试。它可以与 scriptmanager 一起使用。问题出在你的方法中。检查 ajax 调用。
    • 您的网络服务是否完美运行?你的结果显示了什么?粘贴你的词对象?
    • 服务运行良好。当我在 url 中手动编写字符串时,正确返回一个值。但我无法将变量发送给服务。我认为问题出在这里: $.ajax({ data: JSON.stringify(data), dataType: 'json', url: "Service.asmx/kok_bul", type: "POST", contentType: "application/json; charset=utf-8",成功:函数(结果){警报(结果);},失败:函数(errMsg){警报(errMsg);}});
    • alert(result) 不会在 asp.net 中显示任何内容。试试alert(result.d)
    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    相关资源
    最近更新 更多