我有一个使用CakePHP构建的网站。我想发送一个带有jquery ajax的HTTP帖子(我知道cakePHP有一个帮助,但是我想用jQuery做它因为它更灵活)。
我的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 :(得分:0)
这个'index.php'的网址是否正确?
http://localhost:8080/serviceordersystem/index.php/warrantyqueries/add
不应该是:
http://localhost:8080/serviceordersystem/warrantyqueries/add
相反?
您可以使用Chrome开发者工具调试申请,并查看回复代码。如果网址有误,则应返回404.如果Chrome DT或Firebug中未显示任何内容,则表示您的Ajax请求未被触发且不是网址问题。
答案 1 :(得分: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,String textStatus,String errorThrown)
答案 2 :(得分:0)
我发现链接的jquery库已损坏。再次下载了库,现在它正在工作。