2010-01-06 99 views
1

我想让jquery getJSON函数正常工作。以下看起来很简单,但它不起作用。jQuery getJSON函数警报不起作用

$("#edit-item-btn").live('click', function() { 
    var name = this.id; 
    $.getJSON("InfoRetrieve", 
     { theName : name }, 
     function(data) { 
     alert(name); 
    }); 
}); 
+0

同意,格式说明。它是否提醒任何事情?或甚至没有达到?如果它没有提醒,我只能假设你的ajax路径不正确或者没有正确地返回一些东西 – brad 2010-01-06 04:10:36

+0

不,它没有提醒任何东西 – Ankur 2010-01-06 04:11:22

+0

这个代码示例太少} s。请编辑整个代码 - 除非这是当然的问题:-)什么具体'不工作' – 2010-01-06 04:14:20

回答

1

您是否尝试过使用Firebug或Chrome开发人员工具查看正在发出的请求?

在您的网站的当前路径中是否存在名为InfoRetrieve的文件?它返回什么?

+0

我试过了,但是当我使用Firebug时看不到任何请求,这是混淆的主要来源之一。然而,按钮点击正在注册,我以前使用警报来弄清楚。 – Ankur 2010-01-06 04:12:52

+0

是的InfoRetrieve是一个servlet,一旦这个工作正常,我不会使用InfoRetrieve,但现在我只想让警报工作。 – Ankur 2010-01-06 04:13:50

2

您在两处使用name变量,但此变量从未定义过。

3
  1. 确保周围的代码是由一个简单的alert
  2. 更换getJSON呼叫确保“InfoRetrieve”路径实际存在的工作与你的DOM。如果你用替换你的文件名在URL栏中InfoRetrieve它会返回JSON
  3. function(data)需要在关闭点击处理程序之前用}关闭。
  4. { theName : theName }对我来说更有意义,因为data。你确定你输入的权利?
+0

该servlet是否必须返回有效的JSON消息才能使警报生效。我希望稍后能够解决这个问题,一旦我得到了这个请求的一部分。从阅读的角度来看,我一直这样做,所以这就是我现在正在做的事情。 – Ankur 2010-01-06 04:32:38

2

你不应该做警报(数据)吗?

0

我不相信你的代码是正确的。试试这个,看看会发生什么:

$("#edit-item-btn").live('click', function() { 
    var name = this.id; 
    $.getJSON("InfoRetrieve", 
     { theName : name }, 
     function(data) { 
      alert(data.name); 
    }); 
}); 

如果InfoRetrieve用JSON字符串这样回应这应该工作:

{"name":"Sally Smith"} 

有几件事情需要注意:

  1. 你发送请求到页面所在的同一目录中的./InfoRetrieve。如果你正在使用一个servlet,那实际上是否正确?或者你想要“/ servlet/InfoRequest”?
  2. 您将数据作为输入发送到InfoRetrieve,并带有“theName”键和“this.id”所代表的值。你的servlet知道如何接受这个输入吗?
  3. 然后,您接收InfoRetrieve的响应,并将“data”设置为表示响应中的json的对象。您需要访问数据的属性以获取响应中的值。