HTTP 経由で WCF データ サービス (OData) への PUT 要求を実行できません。問題はIDです。自動生成されず、DB 設定を変更できません (この場合は許可されていません)。そのため、ID を送信しようとすると、正しい ID が送信されますが、正しいタイプは送信されません...
明らかに、サービスは ID に Int64 を期待しており、入力を解析できません。コードは次のとおりです。
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"}
この URL: "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
オリジン: http://192.168.0.191:8989
X-Requested-With: XMLHttpRequest
ユーザーエージェント: Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.11 (KHTML、Gecko など)
クローム/17.0.963.56 サファリ/535.11
コンテンツ タイプ: アプリケーション/json; 文字セット=UTF-8
受け入れる: /
リファラー: http://192.168.0.191:8989/
Accept-Encoding: gzip、deflate、sdch
Accept-Language: en-GB,nl;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
TEXT:DATA例 {"DisplayID":"132L","Name":"fdsafsda","Code":"dsafsda","Status":"0","ProjectID":"1L","Description":" fdsafsad"}
これを読むためのtnx