$ .getJSON调用错误的URL

时间:2012-05-15 04:53:51

标签: jquery getjson

我正在构建或多或少的Google日历,但具有更多特定功能/功能。与Google日历一样,当用户点击某个活动时,我会使用ajax get请求填充“弹出式”div。填充div的html包括特定于正在查看的事件的javascript函数。当用户使用完弹出窗口时,无论是关闭它还是保存更改,我都会在隐藏它之前删除它里面的html。

现在问题: 对于某个事件,有一个两步创建过程 1)用户点击日历以创建临时的,可移动的,可调整大小的事件,将其移动到位,单击它以查看确认弹出窗口,当确认时,调用服务器以在数据库中创建事件。

//(start) and (end) are unix timestamps for the beginning and end of the new event
$.getJSON("/events/add/(start)/(end)", function(data) {
    //server returns whether or not the add was successful...
});

现在,一旦确认并且服务器在保存新事件时没有任何问题,弹出窗口的html将被删除,弹出窗口被隐藏,日历将从服务器中重新获取事件。就像它应该的那样,新事件现在正从数据库中提供给日历。

当用户点击数据库版本时,我用view.ctp填充弹出窗口(我正在使用cakephp),其中包含一个取消按钮和一个javascript函数“cancel()”

这是我不知所措的地方: 我知道按钮正在正确调用函数,我已经用几种不同的方式测试了它。在函数内是另一个getJSON请求......

$.getJSON("/events/cancel/(eventId)", function(data) {
    //server returns whether or not cancellation was successful
});

如果我刷新了页面,取消按预期工作,但如果我尝试在创建后立即取消事件(不先刷新页面),而不是“/ events / cancel /(eventId)”url被调用,“/ events / add /(start)/(end)”再次被调用。

获取JSON数据没有问题(调用正确的url时)。实际上,如果您尝试添加与现有事件重叠的事件,则它返回的错误消息是您所期望的。

同样,我知道正在调用正确的JavaScript函数,我知道每个服务器端函数都正常工作。由于我不理解的原因,只是调用错误的URL。

我很抱歉这样做的故事,我希望我已经包含了足够的信息。我不认为这是我的代码中的问题 - 就像我提到的,页面刷新可以防止这个问题。

我尝试将jquery的缓存设置为false。我已经尝试重命名和重定位我的JavaScript函数,以防止任何潜在的重叠。我已经尝试将$ .getJSON更改为$ .get,但问题是每次都一样。

3 个答案:

答案 0 :(得分:0)

调试步骤是将其更改为

var url = "/events/cancel/(eventId)";
alert(url);
$.getJSON(url, function(data) {
    //server returns whether or not cancellation was successful
});

答案 1 :(得分:0)

  

again, i know the right js function is being called

你是如何验证的?

这可能是由许多事情引起的。大多数情况下,这要归功于一些流浪的点击处理程序,你通常可以通过执行

来解决这个问题
$('.cancel').unbind('click').click()

或活/死等效。

一旦你过了那个,就调试该文件中每一步的console.log以找出更改网址的位置。在$.getJSON请求之前开始。如果它是一个不正确的网址,请向上移动,直到您到达网址切换的位置。

你不能仅仅因为它在刷新时起作用而免除代码,特别是因为当你添加一个事件时可能会发生各种各样的事情。

更多代码会有所帮助。

答案 2 :(得分:0)

$.getJSON('/events/add/'+ start +'/'+ end, function(data) {

});   

$.getJSON('/events/cancel/'+eventId, function(data) {

});