jQuery + Ajaxを使用して自家製のvb.net Webサービスを呼び出そうとしていますが、詳細に苦労しています。
Web メソッドとして公開されている小さな関数を次に示します。
<WebMethod()> <ScriptMethod(ResponseFormat:=ResponseFormat.Xml, UseHttpGet:=True)> _
Public Function GetAllVotes() As XmlDocument
Dim theVotes = getVotes()
Dim strResult As String = theVotes.XMLSerialize
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml(strResult)
Return doc
End Function
Web を見た後、XML を返していたので ScriptMethod 属性を追加しましたが、その場合は必要ないことを教えてください。
次に、クライアント側のコードは次のとおりです。
function getVotes() {
$.support.cors = true;
$.ajax({
type: "GET",
contentType: "application/json",
url: "http://nhrd635:8008/votingmanager.asmx/GetAllVotes",
data: {},
dataType: "xml text jsonp",
success: function(msg) {
// Hide the fake progress indicator graphic.
// Insert the returned HTML into the <div>.
$('#myPlaceHolder').html(msg);
},
error: function(msg) {
$('#myPlaceHolder').html(msg);
// alert(msg);
}
});
}
私は多くの..このコードの多くのバリエーションを試しました.postまたはgetを使用し、コンテンツタイプを変更し、charset = utf-8の有無にかかわらず。データの二重引用符の有無: {}。
リクエストの出力をトレースするために firebug を使用します。dataType を jsonp に設定した場合にのみ結果が得られますが、すべてのインスタンスで、ステータスが 200 OK であっても、コードは「エラー」関数で終了します。しかし、jsonpに設定すると、xmlが実際のjavascriptとして扱われるため、間違っていることがわかります...
encosia に関する非常に有益なブログ エントリを読んだことがあります。(サンプル: http://encosia.com/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/ )
しかし、彼の例に従っても、適切なリターンを得ることができません。
私は非常に明白な何か間違ったことをしていますか? json でシリアル化された文字列ではなく、xml 文字列を返しているということですか?