2014-07-18 46 views
1

我有一个用CakePHP构建的网站。我想用jQuery ajax发送一个HTTP帖子(我知道cakePHP有一个帮手,但我想用jQuery来做,因为它更灵活)。jQuery ajax不发送任何东西

我的jQuery函数:

function warrantyqueryPost(ServiceorderSerial, ServiceorderUserId){ 

    var data = { 'data[Warrantyqueries][serial]' : 123, 'data[Warrantyqueries][user_id]' : 4 } 

    var url = '/warrantyqueries/add'; 

    alert(url); 
    $.ajax({ 
     type: 'post', 
     url: url, 
     data: data, 
     success: function(){ 
      alert('hat geklappt'); 
     }, 
     error: function(){ 
      alert('nein'); 
     } 
    }); 

    alert('test'); 
} 

为了测试键 - 值对硬编码(以避免任何错误)。该函数被调用,但不执行ajax调用。什么都没发生。

POST方法的绝对URL是

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

我甚至试过了,没有成功。

对于测试的原因,我试过一个非常简单的Ajax GET:

function warrantyquery(ServiceorderSerial, ServiceorderUserId){ 
    alert('test'); 
    var url = '/serviceordersystem/index.php'; 

    var jqxhr = $.get(url, function() { 
     alert("success"); 
    }) 
     .done(function() { 
      alert("second success"); 
     }) 
     .fail(function() { 
      alert("error"); 
     }) 
     .always(function() { 
      alert("finished"); 
     }); 
} 

什么也没有发生。如果我用我的浏览器调用地​​址,我会返回正确的字符串。

更新 对我来说,它真的看起来像jquery不工作!待机,我会检查...

+0

看看你的浏览器的控制台说什么.. – Confused

+0

请不要使用警报()来排除故障。改用console.log()。打开浏览器的开发者工具并观看请求/响应周期。您还会看到任何JavaScript/jQuery错误。 –

回答

0

我发现链接的jquery库已损坏。再次下载库,现在它正在工作。

0

这个'index.php'的url是否正确?

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

不应该是:

http://localhost:8080/serviceordersystem/warrantyqueries/add 

呢?

您可以使用Chrome开发人员工具调试请购单,并查看响应代码。如果URL错误,则应该返回404.如果Chrome DT或Firebug中没有任何内容出现,这意味着您的Ajax请求未被解雇,这不是URL问题。

+0

是的,我是。由于应用程序的路由器。看到我对Spokey建议的评论。 – mosquito87

+0

您可以尝试点击F12(开发人员工具)并查看响应代码?如果URL错误,它应该返回404。 – Jirico

0

很有可能您的网址是错误的。你说的绝对路径是

http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add 

但通过使用/warrantyqueries/add网址将导致

http://localhost:8080/warrantyqueries/add 

您必须使用绝对路径为了这个工作。

P.S:根据经验,我遇到了$.ajax()http://localhost的问题。如果这仍然失败,您可能需要考虑使用IP。


对于将来的调试,您可以考虑打开浏览器控制台并查看错误和网络请求。另外考虑扩展你的错误方法。

例如

error: function(jqXHR, textStatus, errorThrown) { 
    console.log(textStatus, errorThrown); 
} 

http://api.jquery.com/jquery.ajax/

错误类型摘自:功能(jqXHR jqXHR,字符串textStatus,字符串 errorThrown)

+0

在工作表单中,我已经看到此表单的操作是

...所以我想网址应该是/serviceordersystem/index.php/warrantyquery/add ...试过了。仍然没有成功。 – mosquito87

+0

感谢您的调试提示。更新了我的“简单功能”。仍然没有输出。 – mosquito87

+0

@ mosquito87它提醒错误?如果是的话,请参阅我的回答中的回复 – Spokey

相关问题