Ajax идет к [object%20Object]

Я просто пытаюсь сделать такой простой запрос:

    $('.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. Откуда он вытаскивает объект? Я использую простую строку.

27
задан user781655 29 August 2011 в 11:00
поделиться

3 ответа

У меня была та же проблема, и я копался в поисках ответа. К сожалению, этот участник никогда не вернулся с одним. Моя была глупая ошибка. вернувшись из Ajax, я случайно назвал свою переменную после зарезервированного слова. Вот что у меня было:

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

При таком кодировании по возвращении из Ajax страница перенаправляется на http: // myurl / [Object% 20object], что теперь имеет смысл.

Решение: замените «location = $ ...» на «clocation = $ ...». Надеюсь, этот ответ поможет кому-то еще. Это сложный для отладки.

4
ответ дан 28 November 2019 в 05:40
поделиться

Для меня, работающего в Play и использующего jsRoutes, это было очень и очень трудно понять.

Кажется, что Play (javaScript) выполнит Ajax GET без проблем, используя следующий синтаксис:

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

Однако (и вот неприятная часть) ... Если вы хотите сделайте POST, вам нужно сначала использовать метод absolutURL() в URL, чтобы получить ajax (или сообщение), чтобы не включать [object%20Object] в URL во время публикации. Казалось, что никакая отладка URL или параметров формы не указывает на то, что происходит и почему. Я буквально «угадал» это решение из чистого разочарования. PS: обратите внимание на квадратные скобки в конце absolutURL() - люди сразу же получат те, которые означают «выполнить» функцию, а не просто передадут мне ручку.

  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 привел меня, когда я наконец понял, что это может быть не мое кодирование, которое вызывает проблему:)

2
ответ дан 28 November 2019 в 05:40
поделиться

Вы должны десериализировать текст до номера (Int):

var ID = parseInt( 
$(this)
  .closest("tr") //tr of DataTable 
  .find("td") //td of ....
  .eq(0)
  .text(),
10 
);
0
ответ дан 28 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: