使用ajax?500内部服务器错误从HTML页面调用webservice POST方法

时间:2016-01-24 09:56:11

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

我的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方法都是 .cs 类返回403请求forbiddenn和webservice总是返回内部服务器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

2 个答案:

答案 0 :(得分:1)

<system.web>

中的web.config中添加以下配置元素
 <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>

<强>更新

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

[ScriptService]

答案 1 :(得分:0)

请勿在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");
  }
});

此外,您的网络服务似乎很奇怪。您应该使用属性phoneNo,mobileNo等

接收XX类对象
public class Infos
{
    public string phoneNo = {get; set; };
    public string mobileNo = {get; set; };
    // ...
}

[WebMethod]
public  string  Save_Update_Doctor(Infos infos)
{
    // ...
}