对Web方法的jQuery Ajax请求

时间:2011-03-02 03:36:43

标签: jquery asp.net ajax

我正在尝试将数据发送到我的代码隐藏方法。它起作用,除非我添加到data param。

function (obj) {
   $.ajax({
       type: "POST",
       url: "Pages.aspx/EditPage",
       data: "{'nodeID': '" + $(this).attr('id') + "'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (msg) {
               // Replace the div's content with the page method's return.
       }
     });
    }

为什么我添加的参数导致Web方法不被命中?

更新:在看到抛出了哪些客户端错误之后,似乎ID未定义。我获取元素ID的方法不正确吗?请记住我正在使用jsTree和ca我可能使用(obj)?

5 个答案:

答案 0 :(得分:1)

尝试以下内容:

jQuery.parseJSON('{"name":"John"}');

答案 1 :(得分:0)

试试这个:

data: "{nodeID: '" + $(this).attr('id') + "'}",

编辑:至于获取ID,您可以使用this.id

答案 2 :(得分:0)

要尝试的一些事情

  1. 删除contentType
  2. 删除JSON密钥周围的引号
  3. 交换单引号和双引号
  4. 看起来像这样:

    function (obj) {
       $.ajax({
           type: "POST",
           url: "Pages.aspx/EditPage",
           data: '{nodeID: "' + $(this).attr('id') + '"}',
           dataType: "json",
           success: function (msg) {
                   alert('success!');
           }
       });
    }
    

答案 3 :(得分:0)

在Chrome中调试后,我发现ID未定义。我把日期参数改写为:

data: '{"nodeID": "' + obj.attr('id') + '"}',

因为obj是我目前在jsTree中的节点。

感谢大家提醒我在FF或Chrome中调试并调整引号。

答案 4 :(得分:0)

你正在使用的'this'引用是指jQuery'the'。因此,您的ID未定义。

假设你试图从你的函数参数中获取'obj'的id,我会改写这样的函数:

jQuery.fn.your_func_name = function(){

   $.ajax({
       type: "POST",
       url: "Pages.aspx/EditPage",
       data: "{'nodeID': '" + $(this).attr('id') + "'}",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       success: function (msg) {
       // Replace the div's content with the page method's return.

  });

}//function

像这样使用:

$('#some_element').your_func_name();