2011-12-29 27 views
1

公開JSON Webサービスインターフェイスを持つASP.netアプリケーションを呼び出しています。 Fiddlerを使用してWebサービスにアクセスすると、すべて正常に動作し、私の望みの結果が得られます。私はJQueryを使って同じことをしようとしており、問題にぶつかっています。可能な限り多くの情報を提供しようとしますが、問題を解決するほどの情報は提供しません。JQueryを使用してJSON Webサービスを呼び出す

http://www.XXXXXXXXXX.com/TASService.svc/Logon 

私はバイオリンを使用する場合は、次のようにリクエストが送信されます:

POST http://www.XXXXXXXXXX.com/TASService.svc/Logon HTTP/1.1 
content-type: application/json 
Host: www.XXXXXXXXXX.com 
Content-Length: 50 

{"Email":"[email protected]","Password":"#password1"} 

結果、私として私がリクエストビルダーを使用して、以下の情報とPOSTを送信していますフィドラーで

、取得:

HTTP/1.1 200 OK 
Date: Thu, 29 Dec 2011 21:36:09 GMT 
Server: Microsoft-IIS/6.0 
MicrosoftOfficeWebServer: 5.0_Pub 
X-Powered-By: ASP.NET 
X-AspNet-Version: 4.0.30319 
Content-Length: 38 
Cache-Control: private 
Content-Type: application/json; charset=utf-8 

{"ContactID":52215,"Status":"Success"} 

これは、良好な応答(ログオンの成功)である

次のように私のHTML/jQueryのが定義されている:私はFirefoxでページを実行呼び出すとき

<html> 
<head> 
<title>jQuery Test JSON</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
</head> 
<body> 
<script type="text/javascript"> 
$(document).ready(function(){ 
$.ajax({ 
    type: "POST", 
    url: "http://www.XXXXXXXXXX.com/TASService.svc/Logon", 
    data: "{'Email':'[email protected]', 'Password':'#password1'}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "jsonp", 
    success: function(msg) { 
     $('#msgid').html(msg.d); 
    }, 
    error: function (errormessage) { 
    $('#msgid').html("oops got an error!"); 
    } 
    }); 
}); 
</script> 
JSON Test Web Page 
<div id="msgid"> 
</div> 
</body> 
</html> 

は、今私は(放火魔)を以下のようになります。

"NetworkError: 405 Method Not Allowed - http://www.XXXXXXXXXX.com/TASService.svc/Logon?callback=jQuery171018036323126084708_1325195152450&{%27Email%27:%[email protected]%27,%20%27Password%27:%27#password1%27}&_=1325195152469" 

私が送信されたものを表示すると(フィドラーRAW)、私は以下のようになります。私はすぐに気づく何

GET http://www.XXXXXXXXXX.com/TASService.svc/Logon?callback=jQuery171026545743770048436_1325195246881&{%27Email%27:%[email protected]%27,%20%27Password%27:%27 HTTP/1.1 
Host: www.XXXXXXXXXX.com 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0.1) Gecko/20100101 Firefox/8.0.1 
Accept: */* 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip, deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Connection: keep-alive 
Pragma: no-cache 
Cache-Control: no-cache 

は、私は指定されたものの、それは、GETではなくPOSTを送信しているということですajaxリクエストのPOST。これが私が405エラーを受けている理由だと私は信じています。しかし、なぜPOSTではなくGETをやっているのか分かりません。

私のプロジェクトで時間が不足しているので、これについての支援は非常に高く評価されます。

+0

として、私はあなたが唯一のクロスドメインリクエストにGETを使用することができると信じて、同じドメインにしている場合は、私はあなたがJSONPを使用してPOSTを行っている参照してください。それがローカルの場合は、JSONPの代わりにJSONを使用してみてください – thinkdevcode

+0

データパラメータを二重引用符で囲みますか?それはオブジェクトではなく、文字列(または文字列の評価)である必要があります。 – Ivan

+0

@Ivan ASP.NET Webサービスは、jQueryを介して 'WebMethod'を呼び出す際に、実際に文字列化されたデータを必要とします。 – lsuarez

答えて

関連する問題