【发布时间】:2012-03-07 08:57:32
【问题描述】:
我在通过 HTTP 向 WCF 数据服务 (OData) 执行 PUT 请求时遇到问题。问题是身份证。它不是自动生成的,我无法更改数据库设置(在这种情况下不允许)。因此,当我尝试提交 ID 时,它会发送正确的 ID 但不是正确的类型...
显然,该服务需要一个 Int64 作为 ID,并且无法解析我的输入。 这是代码:
function OnCreateDisplay() {
$('#DisplayInfoLoader').html('<span style="color: orange;">Creating object....</span>');
$('#DisplayInfoLoader').fadeIn(1000);
var url = "....";
var r = new Object();
r.DisplayID = NextDisplayID+"L";
r.Name = $("#FDisplayName").val();
r.Code = parseInt($("#FDisplayCode").val());
r.Status = $("#FDisplayStatus").val();
r.ProjectID = selected_project+"L";
r.Description = $("#FDisplayDescription").val();
jr = JSON.stringify(r);
alert(jr);
$.ajax({
type: "PUT",
url: url,
data: jr,
contentType: "application/json; charset=utf-8",
success: function (result) {
$('#DisplayInfoLoader').html('<span style="color: green;">Display created....</span>');
$('#DisplayInfoLoader').fadeOut(3000);
},
error: function (xhr, ajaxOptions, thrownError) {
alert(xhr.responseText);
$('#DisplayInfoLoader').html('<span style="color: red;">An Error occured....</span>');
$('#DisplayInfoLoader').fadeOut(3000);
}
});
LoadProjectDisplays();
return false;
}
函数NextDisplayID() 只是获取最后插入的 ID 并将其递增。它就像一个魅力。我已经尝试在它之后添加一个 +"L"(WCF 很喜欢它......)但它就是无法解析!
编辑:
我正在发送这个 JSON 字符串:
{"DisplayID":"132L","Name":"Name","Code":"Code","Status":"0","ProjectID":"1L","Description":"Descr"}
在这个网址上:"http://" + ip + ":8989/Service.svc/Displays("+NextDisplayID+"L)"
IP 是 lan-ip 192.168.0.191
此外,当我继续使用代码时...有时我会收到“找不到“显示”段的资源。”作为错误
放置标题:
PUT /Service.svc/Displays(132L) HTTP/1.1
主机:192.168.0.191:8989
连接:保持活动
内容长度:110
X-Requested-With: XMLHttpRequest
用户代理:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11(KHTML,如 Gecko)
Chrome/17.0.963.56 Safari/535.11
内容类型:应用程序/json; charset=UTF-8
接受:/
推荐人:http://192.168.0.191:8989/
接受编码:gzip、deflate、sdch
接受语言:en-GB,nl;q=0.8
接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3
TEXT:DATA 示例 {"DisplayID":"132L","Name":"fdsafsda","代码":"dsafsda","状态":"0","ProjectID":"1L","描述":"fdsafsad"}
tnx 阅读本文
【问题讨论】:
-
您能否在没有完整代码的情况下获取 HTTP 跟踪(例如使用 Fiddler),很难猜测实际值是什么以及您发送请求的 URL 是什么很快。您返回的确切错误也会有所帮助。