1

asmx Web サービスを作成しています。Visual Studio 2012 でプロジェクト名を右クリックし、Web サービス名UserDetails.asmxを追加しました

今、js ファイルで Web サービスを使用しようとしています。このような

$.ajax({
    type: "POST",
    url: "UserDetails.asmx/HelloWorld",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
       alert('success');
    },
    error: function () {
        alert("Error");
    }
});

POST http: //192.168.9.185/GPS/UserDetails.asmx/HelloWorld 500 (Internal Server Error)というエラーが表示されます

私のコードに問題がありますか、それとも何か不足しているため、エラーが表示されます。私の Asmx ページ

<%@ WebService Language="C#" CodeBehind="~/App_Code/UserDetails.cs" Class="UserDetails" %>

私のコードビハインド

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

/// <summary>
/// Summary description for UserDetails
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
// [System.Web.Script.Services.ScriptService]
public class UserDetails : System.Web.Services.WebService {

public UserDetails () {

    //Uncomment the following line if using designed components 
    //InitializeComponent(); 
}

[WebMethod]
public string HelloWorld() {
    return "Hello World";
}

}
4

1 に答える 1

0

編集

簡単な回答: [System.Web.Script.Services.ScriptService] のコメントを外してください。

を使用してエラーメッセージを深く掘り下げる

error: function (xhr,status, error) {
        alert("Error");
       }

xhr を調べると、実際のエラーは別のものであることが明らかになりました (スクリプトから呼び出すことができるのは、クラス定義に [ScriptService] 属性を持つ Web サービスのみです)。

aspx コード ビハインドで [WebMethod] を使用しましたが、そのようなメッセージを受け取るたびに、渡すデータにエラーがあることがわかりました。data:"{}",$.ajax()を追加してみてください

この投稿で説明されているように

読み取り専用リクエストを作成する場合、空のデータ パラメータがキーになります。理由は不明ですが、データが含まれていない場合、jQuery は指定された content-type を適切に設定しません。

于 2013-02-05T07:48:07.203 に答える