从我可以收集到的,问题是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
答案 0 :(得分:2)
好的,所以我根据this较早的问题来解决这个问题。结果我在 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页面添加内容。
答案 1 :(得分: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页面进行更改才能使其正常工作。 我的功能如下:
<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 肖恩