Asp.net 在表单提交时调用ScriptMethod?
当我使用OnClientClick属性从ASP.NET按钮调用ScriptMethod时,ScriptMethod返回95%的时间(显示警报框),页面将提交 如果我从HTML输入按钮调用该方法,ScriptMethod会100%返回,但页面当然不会提交。如果我将类型更改为submit,我将返回到随后的95% 我是否必须改变我的方法,在我的ScriptMethod返回后从javascript调用submit,或者有没有办法让它100%成功?所谓成功,我指的是在表单提交前100%的时间返回。ScriptMethod实际上从未失败过 第页: 脚本服务:Asp.net 在表单提交时调用ScriptMethod?,asp.net,ajax,asp.net-ajax,postback,Asp.net,Ajax,Asp.net Ajax,Postback,当我使用OnClientClick属性从ASP.NET按钮调用ScriptMethod时,ScriptMethod返回95%的时间(显示警报框),页面将提交 如果我从HTML输入按钮调用该方法,ScriptMethod会100%返回,但页面当然不会提交。如果我将类型更改为submit,我将返回到随后的95% 我是否必须改变我的方法,在我的ScriptMethod返回后从javascript调用submit,或者有没有办法让它100%成功?所谓成功,我指的是在表单提交前100%的时间返回。Scri
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Script.Services;
using System.Threading;
namespace ScriptServiceMadness
{
/// <summary>
/// Summary description for Chewbacca
/// </summary>
[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Chewbacca : System.Web.Services.WebService
{
[ScriptMethod]
[WebMethod]
public string ShootImperialProbeDroid(bool letHanDoIt)
{
if (letHanDoIt)
{
return "rrrroooorrrr";
}
else
{
return "rrrraaaarrrr";
}
}
}
}
使用系统;
使用系统数据;
使用System.Web;
使用系统集合;
使用System.Web.Services;
使用System.Web.Services.Protocols;
使用系统组件模型;
使用System.Web.Script.Services;
使用系统线程;
命名空间脚本服务疯狂
{
///
///丘巴卡概要说明
///
[脚本服务]
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[ToolboxItem(假)]
公共类:System.Web.Services.WebService
{
[脚本方法]
[网络方法]
公共字符串射击ImperialProbedRoid(布尔勒坦迪特)
{
如果(LethandIt)
{
返回“rrroooorrr”;
}
其他的
{
返回“rrrraaarrr”;
}
}
}
}
有一件有趣的事……我在写这个问题时从SciptMethod中删除了bool参数,它似乎在100%的时间里都能工作。这当然可能是巧合。因为脚本方法是异步执行的,所以不能保证它会在表单发回之前返回。当您在线部署并且您的用户与web服务的连接较慢时,更改不会增加。我建议您在收到回复后通过调用u doPostBack例程手动回发。您忘记了:
using TheForce;
namespace Luke {
}
using System;
using System.Data;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.ComponentModel;
using System.Web.Script.Services;
using System.Threading;
namespace ScriptServiceMadness
{
/// <summary>
/// Summary description for Chewbacca
/// </summary>
[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class Chewbacca : System.Web.Services.WebService
{
[ScriptMethod]
[WebMethod]
public string ShootImperialProbeDroid(bool letHanDoIt)
{
if (letHanDoIt)
{
return "rrrroooorrrr";
}
else
{
return "rrrraaaarrrr";
}
}
}
}
using TheForce;
namespace Luke {
}