2

私が収集できることから、問題は PageMethod が JSON を返さないことです。戻り値を適切にフォーマットするために、サーバー側で何か他のことをする必要がありますか? 私が見逃しているものは他にありますか?

(注:現在、IE8でこれをテストしています)

クライアント側 (jQuery 1.8.0 を使用):

$.ajax({
            type: "POST",
            url: "Test.aspx/GetDate",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: SuccessFunction,
            error: ErrorFunction
        });

サーバー側:

<WebMethod()> _
Public Shared Function GetDate() As String
    Return Date.Now.ToString
End Function
4

2 に答える 2

2

わかりましたので、この古い質問に基づいてこれを理解しました。web.configファイルのsystem.webセクションに次のものが必要であることがわかりました。

<httpModules>
  <add name="ScriptModule" 
     type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>

Visual Studio で "AJAX Web ページ" を作成すると、これが自動的に設定されると思いますが、古い ASP.NET ページに何かを追加しようとしていました。

于 2012-08-27T23:42:11.057 に答える
0

以下は私のために働いた:

function GetShoppingCartData() {
    jQuery.ajax({
        type: "POST",
        url: "DesktopModules/EcomDnnProducts/AjaxProductDisplay.aspx/GetShoppingCartData",
        data: "{'CartId': '" + jQuery(".shoppingcartid").attr("value") + "'}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: function (msg) {
            //jQuery('#productattributesdata').text(msg.d);
            buildShoppingCart(msg.d);
        },
        fail: function (msg) {
            jQuery('#productattributesdata').text(msg.d);
        }
    });
}

「data:....」ビットは必要ありません

ASP ページを機能させるには、ASP ページに変更を加える必要がありました。私の関数は次のようになります。

   <System.Web.Services.WebMethod()> _
    Public Shared Function GetShoppingCartData(ByVal CartId As String) As String
        Dim ReturnString As String = ""

        Try

            ReturnString  = "test1;test2;test3"

        Catch ex As Exception
            'ProcessModuleLoadException(Me, exc)
            Dim DataLogger As New DataLogger
            DataLogger.WriteToEventLog("Error", ex.Message & " - " & ex.StackTrace)
        End Try

        Return ReturnString
    End Function

他の設定があったかどうかを確認します...

呼び出されるものにアクセス許可を与えるために、web.config に以下を追加しました。

<httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>

これが欠けているビットかどうかはわかりません。

その他のリソース: http://msdn.microsoft.com/en-us/library/byxd99hx(v=vs.80).aspx

http://www.dotnetcurry.com/ShowArticle.aspx?ID=109

http://forums.asp.net/t/1298480.aspx/1

HTHショーン

于 2012-08-28T03:43:56.547 に答える