对PageMethod的ASP.NET jQuery AJAX调用返回带有200响应的parserror



据我所知,问题是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

好吧,所以我是根据这个老问题解决的。事实证明,我需要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网页",我想这是自动为您设置的,但我试图向旧的ASP.NET页面添加一些内容。

以下对我有效:

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);
        }
    });
}

您不需要"数据:…"位

我不得不对我的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

HTHShaun

相关内容

  • 没有找到相关文章

最新更新