私はJavaScriptを使ってWCFサービスにRESTリクエストを送信しようとしています。 は、私は、.NETクライアントとサービスを試してみました、それが 正常に動作これは、WCFサービスでの私の例の方法であって、JavaScriptから私は、これらの方法を試してみましたJSで休憩WSにPOSTリクエストを送信
[OperationContract]
[WebInvoke(Method="POST",
ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
bool GuardarJuan(Persona persona);
:また
function sendRequest3(){
var datos='{"IdPersona":2,"Nombre":"David BQ"}';
var parameters = JSON.stringify(datos);
var req=$.ajax({
url: 'http://localhost:8732/Design_Time_Addresses/RestTEST/GuardarJuan',
type: 'POST',
data: parameters,
contentType: 'application/json',
dataType: 'jsonp'
});
}
そして、次のようになります。
function sendPost(){
var url = "http://localhost:8732/Design_Time_Addresses/RestTEST/GuardarJuan";
var persona={
IdPersona: 2,
Nombre: 'David BQ'
};
var parameters = JSON.stringify(persona);
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-type", "application/json");
xmlHttp.send(parameters);
xmlHttp.onreadystatechange= function X()
{
if(xmlHttp.readyState == 4)
{
alert(xmlHttp.responseText);
}
}
ただし、この作業はありません。
それは常に
おかげ
を許可されていない私に405エラーのメソッドを与えるか、または0x80004005の(NSエラーFAILURE)EDIT: 問題解決...それは、クロスドメインの問題でした。 私はVS Serverでそれをやっていたので、IISに変更してすべて正常に動作しました。
あなたは何を除外しましたか?グーグルが私にhttp://social.msdn.microsoft.com/forums/en-US/wcf/thread/31d3f1aa-28b6-4bd7-b031-73b7e7588e6d/を与えてくれます。また、IISサーバーでPOSTを無効にすることもできます。 –
ポート番号を変更すると、ドメインとクロスドメインポリシーが適用されます。つまり、このリクエストにJSONPを使用するか、JSスクリプト用のJSONを取得するためのサーバーサイドプロキシを作成する必要があります。 – Jasper