【问题标题】:calling webservice POST method from HTML page using ajax?500 internal server error使用 ajax 从 HTML 页面调用 webservice POST 方法?500 内部服务器错误
【发布时间】:2016-01-24 09:56:10
【问题描述】:

我的html页面代码是这样的

   function Save_Click() {


      if (validate() == true)
       {
           var dr = {};

         dr.phoneNo = phoneNo;
          dr.mobileNo = mobileNo;
          dr.Adress = Adress;
          dr.dob = dob;
         var Record = JSON.stringify(dr);



          $.ajax({
              type: "POST",

              url: "doctorRecord.asmx/Save_Update_Doctor",

              data: Record,
              contentType: "application/json",
              dataType: "json",
              success: function (data) {

                  alert("successfully saved");

              },
              error: function (result) {
                  //alert("Error login");

              }
          });


      }


  };

我的 webservice.asmx 代码是

    [WebMethod]
    public  object  Save_Update_Doctor(Doctor_Business.Model.Doctor info)
    {


  //code here
   return "something"
    }

我的 JSON 数据 POST 是

  "{"phoneNo":"jsmith","mobileNo":"AC101","Adress":"2817 S 49th\nApt 314\nSan Jose, CA 95101","dob":"24-01-2016"}"

错误是

  Request format is unrecognized for URL unexpectedly ending in '/Save_Update_Doctor'.

http://localhost:62730/Forms/Theme/doctorRecord.asmx/Save_Update_Doctor 500(内部服务器错误)

我使用测试模式测试了 WEBSERVICE,但运行成功,但是当我尝试从 HTML 页面调用任何 WEB 方法时,任何 WEB 方法都是 .cs 类返回 403 请求禁止和 web 服务总是返回内部服务器 500

我有这个 web.config 文件有什么问题我应该添加什么更改或代码请检查上面的代码并告诉?

 <?xml version="1.0" ?>

工作网络服务网址

 localhost:62730/Forms/Theme/doctorRecord.asmx?op=Save_Update_Doctor 

要使用的网址是这个

  localhost:62730/Forms/Theme/doctorRecord.asmx/Save_Update_Doctor

【问题讨论】:

    标签: c# asp.net json web-services


    【解决方案1】:

    &lt;system.web&gt;内的web.config中添加以下配置元素

     <webServices>
            <protocols>
                <add name="HttpGet"/>
                <add name="HttpPost"/>
            </protocols>
        </webServices>
    

    更新

    还有一件更重要的事情。为了从客户端访问 asmx 脚本,我们需要包含

    [ScriptService]
    

    【讨论】:

    • 无法识别的配置部分 webServices。 Line 12: &lt;webServices&gt;
    • 还是"NetworkError: 500 Internal Server Error - http://localhost:62730/Forms/Theme/doctorRecord.asmx/Save_Update_Doctor"
    • 你在里面添加了吗?
    • 你能在调试模式下点击 Save_Update_Doctor 方法
    • 是的,实际上是什么将是 json 格式的成功,事实上它正在创造人们
    【解决方案2】:

    不要在 ajax 调用中对数据进行字符串化,因为 jQuery 会为您完成。在这里,您向服务器发送一个字符串,而不是一个 json 对象。

    $.ajax({
      type: "POST",
      url: "doctorRecord.asmx/Save_Update_Doctor",
      data: Record,
      success: function(data) {
        alert("successfully saved");
      },
      error: function(result) {
        //alert("Error login");
      }
    });
    

    另外,您的网络服务似乎很奇怪。你的方法应该收到一个 XX 类的对象,其属性为 phoneNo、mobileNo 等。

    public class Infos
    {
        public string phoneNo = {get; set; };
        public string mobileNo = {get; set; };
        // ...
    }
    
    [WebMethod]
    public  string  Save_Update_Doctor(Infos infos)
    {
        // ...
    }
    

    【讨论】:

    • 已经尝试但未解决相同的错误我认为必须在 web.config 中添加某种权限代码,但无论如何这不起作用
    • 工作 url id 这个(http://localhost:62730/Forms/Theme/doctorRecord.asmx?op=Save_Update_Doctor ) 但这是要使用的(http://localhost:62730/Forms/Theme/doctorRecord.asmx/Save_Update_Doctor)
    • 让我检查一下我正在实现它
    猜你喜欢
    • 1970-01-01
    • 2014-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2014-01-28
    相关资源
    最近更新 更多