只有在Firebug或Chrome开发者工具中添加断点时,JavaScript才会执行

只有在Firebug或Chrome开发者工具中添加断点时,JavaScript才会执行,javascript,asp.net,Javascript,Asp.net,我正在使用asp.net、JavaScript和HTML处理程序 在asp按钮onclick事件中,我像这样调用JavaScript <asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false" Text="Done" OnClientClick="DoneClick()" /> 在脚本标记的同一页面中,我编写了如下JavaScript: <script type="text/jav

我正在使用asp.net、JavaScript和HTML处理程序

在asp按钮onclick事件中,我像这样调用JavaScript

<asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false"
     Text="Done" OnClientClick="DoneClick()" />
在脚本标记的同一页面中,我编写了如下JavaScript:

<script type="text/javascript">
function DoneClick()
{
   var checkLocation = "";
   var txtMM = document.getElementById("hdn_Tagging").value;///Id s of textbox assigned in code behind MB--
   txtMM = txtMM.slice(0, -1);
   var arrTxtMM = txtMM.split(",");
   for(var j=0;j<arrTxtMM.length;j++)
   {
      var Loc = document.getElementById(arrTxtMM[j]).value;
      if(Loc == "")
      {
         checkLocation = "";
         break;
      }
      else
      {
         checkLocation += Loc + ":";
      }
   }
   if(checkLocation != "")
   {
      var url ='Handler/newExifDetails.ashx?Id='+txtMM+'&Location='+checkLocation+'';
      var completetbl, html;
      $.getJSON(url,function(json)
      {
         $.each(json,function(i,weed)
         {
            var res = weed.res;
            alert(res);
            if(res == null)
            {
            }
            else
            {   
               window.top.location.href = "Dashboard.aspx";
            }
          });        
       });

    }
    else
    {
       alert("Please pick the locations for all objects");
    }
 }
</script>
然后,当我点击按钮时,JavaScript中的警报仅在我在Firebug或Chrome开发者工具脚本中设置断点时才会显示,如果我设置了断点,它就会工作。没有设置断点,警报既不会显示也不会重定向。

这是一个经典的警报。如果您能向我们展示按钮在生成的HTML代码中的外观,这将有所帮助。您是否尝试使用简单警报作为单击处理程序?您是否尝试在JavaScript中动态添加处理程序

尝试添加:

$('#btn_Tagging').click(DoneClick);
或:

在JavaScript代码的末尾,删除:

OnClientClick="DoneClick()"
来自ASP

我假设生成的HTML按钮获取btn_标记的id-我是否正确?如果它不起作用,那么不要向我们显示您的ASP代码,而是向我们显示生成的HTML,该HTML将进入浏览器,最重要的是:它的value属性是什么

另外,由于您已经在使用jQuery for AJAX,我建议您也在DOM操作中使用jQuery。这样做更容易出错,而且您没有使用已加载的库。请参阅一个示例,如果不小心,即使是getElementById也很容易引入bug。

这是一个经典的例子。如果您能向我们展示按钮在生成的HTML代码中的外观,这将有所帮助。您是否尝试使用简单警报作为单击处理程序?您是否尝试在JavaScript中动态添加处理程序

尝试添加:

$('#btn_Tagging').click(DoneClick);
或:

在JavaScript代码的末尾,删除:

OnClientClick="DoneClick()"
来自ASP

我假设生成的HTML按钮获取btn_标记的id-我是否正确?如果它不起作用,那么不要向我们显示您的ASP代码,而是向我们显示生成的HTML,该HTML将进入浏览器,最重要的是:它的value属性是什么

另外,由于您已经在使用jQuery for AJAX,我建议您也在DOM操作中使用jQuery。这样做更容易出错,而且您没有使用已加载的库。请参阅一个示例,如果不小心,即使getElementById也很容易引入错误。

只要尝试使用普通输入类型=按钮控件,而不是asp:button。或按如下方式重写按钮:

<asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false"
     Text="Done" OnClientClick="DoneClick(); return false;" />
问题在于$.getJSON函数的异步成熟,因此在调用该函数之后,执行上下文将离开DoneClick函数,并通过asp.net基础结构将被调用的u doPostBack函数添加到btn_Tagging html控件的onclick属性中。

只需尝试使用普通输入类型=按钮控件,而不是asp:button。或按如下方式重写按钮:

<asp:Button ID="btn_Tagging" CssClass="button" UseSubmitBehavior="false"
     Text="Done" OnClientClick="DoneClick(); return false;" />

问题在于$.getJSON函数的异步成熟,所以在调用它之后,执行上下文保留DoneClick函数,并通过asp.net基础结构将调用的u doPostBack函数添加到btn_Tagging html控件的onclick属性中。

这听起来像是其中某个竞争条件。请重新检查您得到的JSON是否正确且不包含语法错误,如果是这样的话,$.getJSON通常会无声地失败。还要在重定向条目上设置断点,并检查本地变量。可能发生了一些奇怪的事情。为什么在这里使用asp:Button控件?您是否对此按钮的单击事件具有任何服务器逻辑?您的问题是回发发生在$.getJson函数将结果返回到客户端之前。json的工作方式就像我在处理程序进程请求中放置了一个brekpoint,而js中没有任何断点。。。它转到处理程序,因此该处理程序被称为。。。。然后将尝试在函数中发出警报以进行检查…按钮在html中的外观如下。。。。Doneth这听起来像是某种竞争条件。请重新检查您获得的JSON是否正确且不包含语法错误,如果是这种情况,$.getJSON通常会以静默方式失败。还要在重定向条目上设置断点,并检查本地变量。可能发生了一些奇怪的事情。为什么在这里使用asp:Button控件?您是否对此按钮的单击事件具有任何服务器逻辑?您的问题是回发发生在$.getJson函数将结果返回到客户端之前。json的工作方式就像我在处理程序进程请求中放置了一个brekpoint,而js中没有任何断点。。。它转到处理程序,因此该处理程序被称为。。。。然后将尝试在函数中发出警报以进行检查…按钮在html中的外观如下。。。。Donei已经包括了你所说的那条线,但是没有断点警报仍然不会显示。。。我还尝试在函数DoneClick中包含断点。我得到了这行之前的所有警报…$。getJSONurl,functionjson此行后的警报未显示。。。我不知道是什么原因,我也试着去掉了oncl
单击并给出您提到的那一行,但仍然是json行未执行的那一行之后的警报。。。。可能有什么问题?请尝试通过运行代码,因为代码的缩进使某些地方发生的事情不那么明显。放置一个警报,最好是一个console.dirjson;在$.getJSON处理程序函数的开头,就在$.each之前。。。查看AJAX调用是否成功以及实际返回的内容。我尝试了u提供的链接并对齐了js,然后在$.getJSON之后和$之前添加了警报。每次我都没有收到警报。。。console.dirjson在那里也不起作用。。。。但如果我在fire bug中的那个地方设置一个断点,那么警报和所有警报都会起作用。。。所以调用json有什么问题吗?如果您没有得到警报,这意味着您的AJAX调用没有成功,但也可能意味着它甚至没有开始。尝试将警报放在$.getJSON之前,以查看代码的执行情况是否正常,如果没有,则将警报放在ifcheckLocation之前!=看看它是否到达那里。您必须进行一点实验,以找到代码没有达到预期效果的地方;和console.dirarrTxtMM;在第一个for循环之前,请在浏览器的控制台中查看这些对象的外观,以确保它们符合您的期望。在Firefox中,你必须安装console.dir才能工作。正如你所说,我已经包括了这一行,但是没有断点,警报仍然不会显示。。。我还尝试在函数DoneClick中包含断点。我得到了这行之前的所有警报…$。getJSONurl,functionjson此行后的警报未显示。。。我不知道原因,我也试着删除onclientclick,并给出了你提到的那行,但仍然是json行未执行的那行之后的警报。。。。可能有什么问题?请尝试通过运行代码,因为代码的缩进使某些地方发生的事情不那么明显。放置一个警报,最好是一个console.dirjson;在$.getJSON处理程序函数的开头,就在$.each之前。。。查看AJAX调用是否成功以及实际返回的内容。我尝试了u提供的链接并对齐了js,然后在$.getJSON之后和$之前添加了警报。每次我都没有收到警报。。。console.dirjson在那里也不起作用。。。。但如果我在fire bug中的那个地方设置一个断点,那么警报和所有警报都会起作用。。。所以调用json有什么问题吗?如果您没有得到警报,这意味着您的AJAX调用没有成功,但也可能意味着它甚至没有开始。尝试将警报放在$.getJSON之前,以查看代码的执行情况是否正常,如果没有,则将警报放在ifcheckLocation之前!=看看它是否到达那里。您必须进行一点实验,以找到代码没有达到预期效果的地方;和console.dirarrTxtMM;在第一个for循环之前,请在浏览器的控制台中查看这些对象的外观,以确保它们符合您的期望。在Firefox中,必须安装console.dir才能工作。