【问题标题】:Issue in Calling WebService by jquery Ajaxjquery Ajax调用WebService的问题
【发布时间】:2014-11-24 11:54:47
【问题描述】:

我有一个 asp.net Web 服务,我想通过 Jquery Ajax 调用它,但在执行时我得到 500 Internal Server Error 并且在响应中我在浏览器开发工具 (Firebug) 中看到输出时得到 {"Message":"Invalid JSON primitive: Name.","StackTrace":"。 这是我的网络服务代码..

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService]
public class DateWebService : System.Web.Services.WebService {

HttpRequest request;

public DateWebService () {

    //Uncomment the following line if using designed components 
    //InitializeComponent(); 
}

[WebMethod]
public string GetData(string name, string contact, string email) {

    string Name = request[name];
    string Contact = request[contact];
    string Email = request[email];

    return Name+Contact+Email;
}    
}

这是我的 jquery Ajax 代码..

$(document).ready(function(){

        $("#Button1").click(function() {


            $.ajax({
                type: "POST",
                url: "/ASPNET_WebServices_JQuery/DateWebService.asmx/GetData",
                data: { 'Name': 'SRI', 'Contact': '787979879898', 'Email': 'hr@.com' },
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (msg)
                {
                    $("#output").text(msg.d);
                }
            });
        });

    });

请帮我解决这个问题..谢谢...

【问题讨论】:

    标签: jquery asp.net ajax web-services


    【解决方案1】:

    试试这个

    [WebMethod]
    public   string GetData(string Name, string Contact, string Email) {
    
                   return Name+Contact+Email;
    }  
    

    将您的字符串值存储到局部变量,然后尝试如下

     $.ajax({
                        type: "POST",
                        url: "/ASPNET_WebServices_JQuery/DateWebService.asmx/GetData",
                        data: '{"Name":"' + Name + '","Contact":"' + Contact + '","Email":"' + Email + '"}',
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (msg)
                        {
                            $("#output").text(msg.d);
                        }
                    });
    

    【讨论】:

    • Unknown web method GetData 放置 static 时出错
    • 删除静态并尝试这样的数据: JSON.stringify({Name: "SRI"},etc..), ,在方法中放置一个断点并检查它是否被调用,如果不是调用然后检查它是否可以使用任何参数
    • JSON.stringify({Name: "SRI"},etc..) 你想让我在 Ajax Call 中替换 ..?
    • 是的,在 ajax 调用中替换,如果它也不起作用,则从函数中删除参数并从 ajax 中删除帖子数据并尝试它是否工作
    • 我也做了同样的事情,现在它的工作和甚至断点都被击中了..但我也想传输数据。为什么它没有发生在数据传输中?
    【解决方案2】:

    你可以这样试试……

        [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string GetData(string Name, string Contact, string Email) {
            return Name+Contact+Email;
        }
    
    
    $.ajax({
                    type: "POST",
                    url: "/ASPNET_WebServices_JQuery/DateWebService.asmx/GetData",
                    data: "{ 'Name': 'SRI', 'Contact': '787979879898', 'Email': 'hr@.com' }",
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (msg)
                    {
                        $("#output").text(msg.d);
                    }
                });
    

    【讨论】:

      【解决方案3】:

      从您的 ajax 代码中删除以下行,它将起作用:

      contentType: "application/json; charset=utf-8",
      dataType: "json",

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多