AJAX вызывает [объект% 20Object] вместо URL (Symfony) - PullRequest
0 голосов
/ 24 апреля 2018

В ветке я использую data-post-url="{{ path('ajax')}}", поэтому я могу получить URL в javascript, используя var path = $("#edit-url-js").data();

Однако вместо того, чтобы идти к http://localhost/happysaucer/web/app_dev.php/ajax, оно идет к http://localhost/happysaucer/web/app_dev.php/profile/[object%20Object]

Что странно, потому что когда я console.log (path) переменная 'path', он возвращает правильный URL. Когда я жестко кодирую URL-адрес, переменная path возвращает вызов ajax так, как должен.

AJAX вызов:

$(document).ready(function(){

var path = $("#edit-url-js").data();

$(".option-js").on("change", function() {

    $.ajax({
        url: path,
        type: "post",
        data: "test",
        success: function(data) {

        }
    });

});
});

Действие контроллера

/**                                                                                   
* @Route("/ajax", name="ajax")
*/
public function ajaxAction(Request $request)    
{

    $r = new JsonResponse();

    return $r->setData([
        'success' => true,
    ]);
}

Код веточки

<div class="consumeable-container" id="edit-url-js" data-post-url="{{ path('ajax')}}">

1 Ответ

0 голосов
/ 24 апреля 2018

Странно, что вы получаете правильный URL при выполнении console.log (путь), но он может измениться из-за того, где вы его вызываете, из-за контекста, может быть, где-то есть глобальная переменная пути?

В любом случае, есть 3 способа получить этот URL правильно:

JQuery:

var path = $("#edit-url-js").data("post-url")
var path = $("#edit-url-js").attr("data-post-url")

Чистый Javascript:

var path = document.getElementById("#data-post-url").getAttribute("data-post-url")

Но я предлагаю вам добавить URL-адрес в событие опциона, чтобы сделать его эксклюзивным для этой опции, только в том случае, если вы хотите, чтобы он был эксклюзивным, например:

$(document).ready(function() {
    $(".option-js").on("change", function() {
      var $optionElement = $(this)
        $.ajax({
          url: $optionElement.data("post-url"),
          type: "post",
          data: "test",
          success: function(data) {
          }
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...