对web方法的ajax调用在VS2010中不起作用
本文关键字:VS2010 不起作用 调用 ajax web 方法 | 更新日期: 2023-09-27 18:29:51
我试图在VS2010中设置一个非常简单的web方法调用,但失败得很惨。完全相同的设置在VS2008中工作,我不知道区别在哪里。代码如下:
test.aspx ajax调用(我也尝试过不使用localhost):
$(document).ready(function ()
{
$("#btnAjax").click(function ()
{
var testData = "test";
$.ajax({
type: "POST",
url: "http://localhost/test.aspx/Test",
data: JSON.stringify({ test: testData }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg)
{
alert("ok");
},
error: function (xhr, err)
{
alert("readyState: " + xhr.readyState + "'nstatus: " + xhr.status);
alert("responseText: " + xhr.responseText);
}
})
});
});
test.aspx(断点表示从未到达该方法):
[WebMethod()]
public static string Test(string test)
{
return "xyz";
}
web.config(我从VS2008版本中获得了这些):
<modules>
<remove name="ScriptModule"/>
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-Integrated"/>
<remove name="ScriptHandlerFactory"/>
<remove name="ScriptHandlerFactoryAppServices"/>
<remove name="ScriptResource"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</handlers>
返回的就绪状态始终为0,响应文本为空;firebug显示发布了正确的数据,响应选项卡显示页面html;我以前从未使用过firebug调试器,所以也许我还应该看看其他东西。控制台/网络已经启用,但我没有看到任何明显的东西。
我搜索了很多,但找不到任何有用的或我还没有尝试过的东西。总之,我不知道还能去哪里看。。。
也许有一个指针是,我最初试图实现WCF服务,但它一直以"身份验证失败"而失败——从我读到的IIS设置,但我发现的帖子都不起作用。由于它不一定是WCF,我最终认为我回到了基础,即这个简单的web方法。我不知道如何验证这是身份验证问题还是其他问题。让我认为这并不是因为VS2008版本使用完全相同的服务器。
任何建议都将不胜感激。
开始工作了。。。最后张贴它作为一个答案,以防其他人撞上这个
问题是调用需要async:false,或者——至少在我的情况下——它在大多数浏览器上都失败了;不过,这对我来说没有意义,所以我将发布一个单独的问题,希望有人能解释