代码之家  ›  专栏  ›  技术社区  ›  Ahmed

是否有可能会发送get请求?

  •  1
  • Ahmed  · 技术社区  · 16 年前

    我对telerik radgrid有问题,我想启用多行选择。我还想在选择或取消选择行时转到服务器。我创建了一个javascript函数来处理网格的客户端事件(onrowselected和onrowsdeselected)。函数如下所示:

     function onOperationRowSelected(sender, eventArgs) {
                __doPostBack("<%=myControl.ClientID %>", "rowSelected:" + eventArgs.get_itemIndexHierarchical());
            }
    

    另一个函数非常相似,唯一的区别是它发送字符串“rowdeselected”而不是“rowselected”。

    在“加载”页上,我使用“ispostback”检查请求是否是post请求,如果是,则检查它是rowselected还是rowselected。

    我的问题是,当我在网格上选择第一个raw时,会发生post请求(这是预期的),但是,当我选择第二行时,会发出get请求,这(显然)将导致ispostback返回false。

    我错过了什么?


    编辑: 我刚刚检查了请求对象,发现httpmethod属性值是“post”。为什么是http post请求,ispostback返回false??

    3 回复  |  直到 16 年前
        1
  •  1
  •   Meligy    16 年前

    您确定get请求具有正确的事件参数吗?
    我想还有别的东西在发出GET请求。可能是网格带来的一些ajax魔术,一些资源或ajax页面方法调用或url重写之类的东西。

    页面名是default.aspx还是类似的?有时在某些浏览器中(不记得细节)获取一个图像或(不记得具体情况)会使浏览器同时点击“samefolder/”url,从而打开默认页面。

    用firebug检查请求,看看它说明了什么。

        2
  •  2
  •   Nick Craver    16 年前

    该函数尊重 <form> . 以下是Dopostback的工作:

    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    

    所以它将执行表单设置的任何操作,这通常只是在asp.net中发布。

    那有可能吗?是的,当然,为什么会发生在你的案子里我不确定。

        3
  •  2
  •   tvanfosson    16 年前

    在没有看到网格生成的标记的情况下,我假设它使用带有javascript应用单击处理程序的链接来执行回发。因此,我认为最可能的罪魁祸首是一个javascript错误,它阻止处理程序启动,这给了您应用处理程序的锚的默认行为,在本例中是get。我能给你的最好建议是在firefox/firebug中查看它,看看控制台中是否显示了任何错误。

    也就是说,您可能希望构建应用程序,以便在禁用javascript的情况下运行,同时更正错误,并找出如果最终出现get请求时如何响应。

    推荐文章