2012-03-30 1 views
0

私は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に変更してすべて正常に動作しました。

+0

あなたは何を除外しましたか?グーグルが私にhttp://social.msdn.microsoft.com/forums/en-US/wcf/thread/31d3f1aa-28b6-4bd7-b031-73b7e7588e6d/を与えてくれます。また、IISサーバーでPOSTを無効にすることもできます。 –

+0

ポート番号を変更すると、ドメインとクロスドメインポリシーが適用されます。つまり、このリクエストにJSONPを使用するか、JSスクリプト用のJSONを取得するためのサーバーサイドプロキシを作成する必要があります。 – Jasper

答えて

1

まず、サービスと対話しようとしているページと同じドメインの「サービス」ですか?あなたがJSONPを使用しようとしている場合はJSONPは単純で応答をラップ<スクリプトSRC =「サービス...?コールバック= somerndmethod」>を作成して

第二には、あなただけではない「POST」を「GET」を使用することができますsomerndmethod(response)...あなたの期待されるコードを実行します。

IIS/IISExpressを使用し、同じhost:portにmainとwcfアプリケーションの両方が必要な場合があります。

関連する問題