【发布时间】:2010-10-28 04:00:56
【问题描述】:
我在 web kit 浏览器中使用本地数据库并从数据库中获取数据,我有以下代码:
function synchronise() {
myDB.transaction(
function (transaction) {
transaction.executeSql("SELECT * FROM Patients;", [], synchroniseHandler, errorHandler);
}
);
我现在尝试使用 synchroniseHandler 将所有行发送到 Web 服务并在那里处理数据。
function synchroniseHandler(transaction, results) {
for (var i = 0; i < results.rows.length; i++) {
var row = results.rows.item(i);
var patient = new Object();
patient.name = row['name']
patient.address = row['address']
patient.city = row['city']
patient.state = row['state']
patient.zip = row['zip']
patient.phone = row['phone']
$.ajax({
type: "POST",
url: "MyService.asmx/synchronise",
data: JSON.stringify(patient),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
alert("success");
},
error: function (xhr, status) {
alert("fail" + status);
}
});
}
}
但是它总是说“错误”失败
这是一个 ASP.NET 2.0 webb 应用程序,但我使用 JSON.NET,我的 webmethod 获取数据是
[WebMethod]
public void synchronise(string patient)
{
JObject o = JObject.Parse(patient);
string name = (string)o["name"];
string address = (string)o["address"];
string city = (string)o["city"];
string state = (string)o["state"];
string zip = (string)o["zip"];
string phone = (string)o["phone"];
现在我没有使用 ajax,但有 JavaScript 函数,它可以获取所有行,然后在我单击按钮时将它们插入远程数据库并且它可以工作。但是,我正在尝试在不回发的情况下自动插入这些内容。
关于如何让它发挥作用的任何建议?
编辑: 似乎错误来自网络服务:
Failed to load resource: the server responded with a status of 500 (Internal Server Error)
System.InvalidOperationException: Request format is invalid: application/json; charset=UTF-8.
at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
编辑2... 在 web.config 中添加了对 httppost 的支持并摆脱了 加载资源失败:服务器响应状态为 500 (Internal Server Error)
【问题讨论】:
-
究竟是什么“失败说'错误'”?这是来自你的回调函数(应该返回“失败”+状态而不是“错误”,所以我很困惑)?换句话说,错误信息是什么,它来自哪里?
-
它是:error: function (xhr, status) { alert("fail: " + status);并且状态消息只是“错误”。我也很困惑,我第一次这样做嘿。
标签: asp.net jquery ajax web-services