jqueryからASMX Webメソッドを呼び出す際にどこが間違っていますか?

StackOverflow https://stackoverflow.com/questions/608006

  •  03-07-2019
  •  | 
  •  

質問

asp.net 2.0アプリケーションで単純なwebmethodを使用しています(3.5 ajax拡張ではなく1.0拡張を使用)。私はjQueryからメソッドを呼び出そうとしていますが、無数の例がインターネットやここSOで示しているように呼び出すと、Internal Server Errorメッセージが返されます。

現在のコードは次のとおりです。

[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string Select(string login)
{
    UserProfile profile = UserProfile.GetUserProfile(login);

    return "{ FirstName: '" + profile.FirstName + "', " +
             "LastName: '" + profile.LastName + "', " +
             "EmailAddress: '" + profile.EmailAddress + "', " +
             "PhoneNumber: '" + profile.PhoneNumber + "' }";
 }

そして今、jquery:

$.ajax({
    type: "POST",
    url: "Services/ProfileService.asmx/Select",
    dataType: "json",
    data: "{'login':'DOMAIN%5CUSER1'}",
    contentType: "application/json; charset=utf-8",
    success: function(msg){ alert(msg); },
    error: function(xhr){ alert(xhr.statusText);}     
});

Webサービスは、 [ScriptService] 属性でも装飾されます。 contentTypeをコメントアウトし、dataTypeをtextに変更し、データをクエリ文字列(name = value)に変更すると、XMLが適切に返されます。

どこがおかしいのですか?

更新: 私はjQuery v1.3.1を使用し、IE6とFirefox 3の両方でテストしています。一貫した結果が得られています。

役に立ちましたか?

解決

これは私の側の愚かな間違いでした。この問題は解決されました。 AJAX拡張機能への参照を含めましたが、ASMXサービスのhttphandlerをScriptHandlerFactoryクラスに書き換えるのを忘れていました。

これを追加することで問題が解決しました。

例や問題の修正方法について質問するメールを受け取ったので、このスープをナッツに変える方法についてのブログ記事を書きました。

http://randomactsofcoding.blogspot .com / 2009/03 / jquery-json-and-asmx-20-services.html

他のヒント

はい。 WCFのASMXを放棄する必要があります。マイクロソフト自身からの推奨。問題の解決には役立たないと思いますが、WCFを検討するか、少なくともそのテクノロジーを検討することをお勧めします。

同じ問題がありましたが、次をコードファイルに追加すると修正されました

[System.Web.Script.Services.ScriptService]

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top