我的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
答案 0 :(得分:1)
在<system.web>
<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)
{
// ...
}