【问题标题】:Ajax going to [object%20Object]Ajax 转到 [object%20Object]
【发布时间】:2011-08-29 11:00:32
【问题描述】:

我只是想做一个这样的简单请求:

    $('.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。它从哪里拉出对象?我正在使用一个简单的字符串。

【问题讨论】:

标签: jquery


【解决方案1】:

对我来说,问题在于我使用的是$.post 而不是$.ajax

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

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

【讨论】:

  • 是的,但如果你不将类型设置为 'POST',这是一个 http GET
  • 我只是遇到了一个问题,使用 $.ajax({type: 'POST'...}}) 实际上是在使用 GET - 很奇怪。我转而使用$.post(),并犯了与您在上面所做的相同的语法错误。对于$.post(),第一个参数是 URL 字符串,后跟一个对象 - 这与简写版本 $.ajax() 的语法略有不同。干杯。
【解决方案2】:

ajax 需要一个参数映射。 post 需要单个参数:

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

// works:
$.post("/example/" + this.id);

【讨论】:

    【解决方案3】:

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

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

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

    解决方法:将“location=$...”更改为“clocation=$...” 希望这个答案对其他人有所帮助。调试起来很困难。

    【讨论】:

    • 此处不相关:用户尚未定义任何变量。使用全局变量完全是你的错。
    • 考虑到戴夫只是在一个相对较老的问题上提出一些问题,这有点苛刻。我的问题是 URL 的构造不当。这也是 OP 的问题,可能是通过重定向,或者他无意中在代码示例中遗漏了一些内容。
    【解决方案4】:

    对我来说,在 Play 中工作并使用 jsRoutes 是非常痛苦的。

    Play (javaScript) 似乎可以使用以下语法毫无问题地执行 Ajax GET:

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

    但是(这是令人讨厌的部分)...如果您希望进行 POST,您需要首先在 URL 上使用 absolutURL() 方法以获取不包含 [object%20Object] 的 ajax(或帖子)在发布时间进入网址。没有多少调试 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) {
      })
    

    我在这里回答这个问题,因为一旦我最终意识到这可能不是我的编码导致问题时,Google 就会引导我去这里 :)

    【讨论】:

    • 我又一次被它所吸引,我很高兴我记得记录它:)
    【解决方案5】:

    您必须将文本反序列化为 Number(Int):

    var ID = parseInt( 
    $(this)
      .closest("tr") //tr of DataTable 
      .find("td") //td of ....
      .eq(0)
      .text(),
    10 
    );
    

    【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2022-11-17
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2013-01-03
    相关资源
    最近更新 更多