Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何使用jquery调用服务器端方法?_Asp.net_Ajax_Jquery Ui_Jquery - Fatal编程技术网

Asp.net 如何使用jquery调用服务器端方法?

Asp.net 如何使用jquery调用服务器端方法?,asp.net,ajax,jquery-ui,jquery,Asp.net,Ajax,Jquery Ui,Jquery,我正在尝试使用jquery调用一个服务器端方法,处理在客户端动态生成的textbox的textchange事件(我不知道如何获取它的id)。有人能帮我做这件事吗?im使用的脚本如下所示: <script type="text/javascript"> $(init); function init() { $('#test').droppable( //Div Control where i'll be dropping items

我正在尝试使用jquery调用一个服务器端方法,处理在客户端动态生成的textbox的textchange事件(我不知道如何获取它的id)。有人能帮我做这件事吗?im使用的脚本如下所示:

  <script type="text/javascript">

    $(init);

    function init() {

      $('#test').droppable(  //Div Control where i'll be dropping items
            {
              drop: handleDropEvent
            });

      $('a').each(function(idx, item) {   
        $(item).draggable({ cursor: 'move', helper: 'clone' })
      });
    }

    function handleDropEvent(event, ui) {
      var draggable = ui.draggable;
      document.getElementById('test').innerHTML += addColumn(draggable.attr('text')) + '<br>';
    }
    $('.textChangeClass').live('change', function() { 
/* Evokes on the text change event for the entire textboxes of class .textChangeClass. Is it possible to specify the dynamic textbox generated @ clientside here? (like for e.g. :  $('#mytextbox').click(function () ) */

    $.ajax({
      type: "POST",
      url: "Webtop.aspx/ServerSideMethod",         //This is not getting called at all.
      data: "{'param1': AssignedToID}",
      contentType: "application/json; charset=utf-8",
      dataType: "json",
      async: true,
      cache: false,
      success: function(msg) {
        alert("From Server");
      }
    })

    });

    });
    function addColumn(column) {

      var iHtml;

      //This is how i'm generating the textboxes along with a checkbox bound by a div.
      iHtml = '<div id="dv' + column + '" width="100px;" height="20px;" padding: "0.5em;">&nbsp;' + '<span title="ToolTipText">' + '<input type="checkbox" id="cb' + column + '" value="' + column + '" /> <label for="cb' + column + '">' + column + '</label></span><input class="textChangeClass" type="text" id="aln' + column + '">&nbsp;</div>';
      return iHtml
    }
  </script>

美元(初始);
函数init(){
$('#test')。可拖放(//Div控件,我将在其中拖放项
{
下降:扶手缆绳通风口
});
$('a')。每个(函数(idx,项){
$(项).draggable({cursor:'move',helper:'clone'})
});
}
函数handleDropEvent(事件,ui){
var draggable=ui.draggable;
document.getElementById('test').innerHTML+=addColumn(draggable.attr('text'))+'
'; } $('.textChangeClass').live('change',function(){ /*调用类的整个文本框的文本更改事件。textChangeClass。是否可以在此处指定@clientside生成的动态文本框?(例如:$(“#mytextbox”)。单击(函数())*/ $.ajax({ 类型:“POST”, url:“Webtop.aspx/ServerSideMethod”//根本不会调用它。 数据:“{'param1':AssignedToID}”, contentType:“应用程序/json;字符集=utf-8”, 数据类型:“json”, async:true, cache:false, 成功:功能(msg){ 警报(“来自服务器”); } }) }); }); 函数addColumn(列){ var iHtml; //这就是我如何生成文本框以及由div绑定的复选框。 iHtml=“”+“”+“”+列+“”; 返回iHtml }
您需要编写代码,在生成textbox之后将事件添加到textbox,否则它不会被触发

  • 添加文本框
  • 然后编写代码将事件添加到文本框或将事件绑定到文本框
  • 只要按照上面的步骤就可以完成你的工作

    编辑

    将错误函数添加到ajax调用中,您将得到错误。。。将允许您继续进行

    $.ajax({
        type: "post", url: "/SomeController/SomeAction",
        success: function (data, text) {
            //...
        },
        error: function (request, status, error) {
            alert(request.responseText);
        }
    });
    
  • 我想你有一个额外的“}”);“虽然这可能不是问题所在
  • 什么是“指定类”?尝试在其周围添加单引号。我似乎记得几年前有一个奇怪的问题,与json中的引用有关
  • 你能在Fiddler/firebug/etc中看到这个请求吗?内容正确吗
  • 您也应该小心使用推断分号。如果你曾经缩小你的javascript(是的,我知道这是嵌入的,但我希望有一天它会被移动到一个单独的js文件),你最终会遇到问题。想象一下,其他开发人员出现了,进行了一些重构,并且需要在ajax调用之后添加一个返回值

    $.ajax({...})return foo}
    
    编辑

    Fiddler/Firebug网络面板是您的朋友。。。它们将允许您检查来自服务器的请求和响应。这样,您就不必添加错误处理程序(尽管您最终可能会因为其他原因而添加错误处理程序)

    编辑

    要回答问题的另一部分,您可以通过使用事件处理程序中的“this”关键字访问触发更改事件的文本框

    $('.textChangeClass').live('change', function(event) {
        //Note that the 'event' parameter has interesting things in it too. 
        var changedText = $(this).val();
        alert("The value in the textbox is: '" + changedText + "'");
        var data = {
            param1: changedText
        };
        $.ajax({
            ...
            //Using json2 library here to create json string
            data: JSON.stringify(data), 
            ...
        });
    });
    

    注意,我在事件处理程序中添加了可选的“event”参数。它有很多有趣的东西,对于jQuery新手来说,这是一个经常被忽略的东西。阅读相关内容。

    我如何将其绑定到我的动态文本框?事实上,事件是在文本框的文本更改时触发的,但ajax部分不起作用向您的ajax调用添加错误函数,正如我在回答中所做的那样。您问题的解决方案不仅取决于客户端的代码(JavaScript代码),还取决于服务器代码。对于我来说,完全不清楚您是如何实现您的服务器方法的。最简单的方法是ASMX web服务或WCF,但在这种情况下,url应该是
    Webtop.ASMX/ServerSideMethod
    Webtop.svc/ServerSideMethod
    。您可以在问题中包含更多关于服务器代码的信息,或者更好地包含代码片段。我删除了参数并尝试访问服务器端方法。但还是没用。我有萤火虫。不知道如何在脚本中使用它。打开firebug,然后转到“网络”选项卡。按照说明启用它。2.重新加载第3页。在所需文本框4中触发更改事件。查看ajax对服务器的调用(或缺少),您也可以调试javascript。转到脚本表并启用它。您可以在事件处理程序中设置断点,并查看发生了什么。如果您很勇敢,甚至可以使用jquery代码。打开脚本和网络调试会大大降低正常浏览速度,因此您需要确保禁用firebug,或者至少关闭脚本和网络调试以进行正常浏览。这很有趣,也很有帮助。非常感谢你。但我注意到的一件事是,我的脚本在跨越语句数据时被破坏:我的意思是,它甚至没有达到成功或错误调用。。。那么您正在发送一个http请求。我相信它使用反射来查看参数的类型。从0个参数和一个空数据字段“{}”开始,看看是否可以让它这样工作。那么看看这个,,