公開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をやっているのか分かりません。
私のプロジェクトで時間が不足しているので、これについての支援は非常に高く評価されます。
として、私はあなたが唯一のクロスドメインリクエストにGETを使用することができると信じて、同じドメインにしている場合は、私はあなたがJSONPを使用してPOSTを行っている参照してください。それがローカルの場合は、JSONPの代わりにJSONを使用してみてください – thinkdevcode
データパラメータを二重引用符で囲みますか?それはオブジェクトではなく、文字列(または文字列の評価)である必要があります。 – Ivan
@Ivan ASP.NET Webサービスは、jQueryを介して 'WebMethod'を呼び出す際に、実際に文字列化されたデータを必要とします。 – lsuarez