Ajax转到

我只想尝试这样一个简单的请求:

$('.asd').change( function () { $.ajax({ url: 'http://127.0.0.1/folder/index.php/controller/action/integer', success: function(data){} }); } ); 

这段代码试图转到http://127.0.0.1/folder/index.php/controller/[object%20Object]并得到一个404.它从哪里拉出对象? 我正在使用一个简单的字符串。

对我来说问题是我使用$.post而不是$.ajax

 // fails: $.post({ url: "/example/" + this.id, // ... }); // works: $.ajax({ url: "/example/" + this.id, // ... }); 

ajax期望参数图。 post期望单个参数:

 // fails: $.post({ url: "/example/" + this.id, // ... }); // works: $.post("/example/" + this.id); 

我有同样的问题,一直在寻找答案。 不幸的是,这个贡献者从来没有回来过。 我是一个愚蠢的错误。 从Ajax返回后,我在一个保留字后无意中命名了我的变量。 这就是我所拥有的:

 $.post('/MyApp.php', { param: 'getLocation' }, function(xml) { location=$(xml).find('Location'); } }); 

像这样编码,从Ajax返回后,页面被重定向到http:// myurl / [Object%20object],这现在非常有意义。

解决方案:将“location = $ …”更改为“clocation = $ …”希望这个答案可以帮助其他人。 这是一个艰难的调试。

对我来说,在Play中工作并使用jsRoutes这一点非常痛苦。

似乎Play(javaScript)将使用以下语法执行Ajax GET而不会出现问题:

 $.ajax(jsRoutes.controllers.MyController.ajax(inurlparam)) .done(function(data) { }).fail(function(data) { }) 

然而(这里是令人讨厌的部分)…如果你想做一个POST你需要首先在URL上使用absolutURL()方法来获得ajax(或post)不包含[object%20Object]发布时间的url。 没有多少调试url或表格参数似乎表明发生了什么,也没有原因。 我只是完全“猜到”这个解决方案纯粹是因为沮丧。 PS:注意absolutURL()末尾的括号 – js人们会立即得到那些意思“做”这个函数,而不仅仅是把它传递给它。

  var url = jsRoutes.controllers.MyController.ajaxPost(inurlparam).absoluteURL(); var formData = $('#form').serialize(); $.ajax({ url: url, type: "POST", data: formData }).done(function(data) { }).fail(function(data) { }) 

我在这里回答这个,因为这是谷歌带领我的地方,一旦我终于意识到它可能不是我的编码导致问题:)