使用 ajax?500 内部服务器从 HTML 页面调用 Web 服务 POST 方法错误
本文关键字:Web 调用 服务 POST 错误 方法 HTML ajax 内部 服务器 使用 | 更新日期: 2023-09-27 18:31:41
我的 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 数据发布是
"{"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(内部服务器错误)
我使用测试模式测试了网络服务,但运行成功,但是当我尝试从 HTML 页面调用任何 WEB 方法时.cs类返回 403 请求禁止,网络服务始终返回内部服务器 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
在
web.config 中添加以下配置元素<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
更新
还有一件重要的事情。为了使 asmx 脚本可以从客户端访问,我们需要包含
[ScriptService]
不要在 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)
{
// ...
}