2017-02-22 4 views
0

Я пытаюсь сделать основную запись, и я получаю ошибку 'toLowerCase'.Ошибка jQuery ajax 'toLowerCase' с базовым методом POST, но работает для аналогичного метода DELETE

Мой URL является «разработчик/58ace2b191e01c24f61fc241/сломал» и запрос «http://localhost:8080/developer/58ace2b191e01c24f61fc241/broke», но по какой-то причине это не работает.

broke = function (url) { 
var request = getRootUrl() + url; 
var token = $("meta[name='_csrf']").attr("content"); 
var header = $("meta[name='_csrf_header']").attr("content"); 
$(document).ajaxSend(function(e, xhr, options) { 
    xhr.setRequestHeader(header, token); 
}); 
$.post(request, function(data) { 
    console.log("hit"); 
}); 
}; 

Однако, у меня есть очень похожий метод удаления, который делает работу:

makeDeleteCall = function (url) { 
var token = $("meta[name='_csrf']").attr("content"); 
var header = $("meta[name='_csrf_header']").attr("content"); 
$(document).ajaxSend(function(e, xhr, options) { 
    xhr.setRequestHeader(header, token); 
}); 
$.ajax({ 
    type: "DELETE", 
    url: getRootUrl() + url 
}); 
}; 

Полный трассировки стека:

Uncaught TypeError: Cannot read property 'toLowerCase' of undefined 
at Object.setRequestHeader (http://localhost:8080/js/jquery.js:4:19436) 
at HTMLDocument.<anonymous> (http://localhost:8080/js/developer.js:22:13) 
at HTMLDocument.dispatch (http://localhost:8080/js/jquery.js:3:8436) 
at HTMLDocument.m.event.add.r.handle (http://localhost:8080/js/jquery.js:3:5139) 
at Object.trigger (http://localhost:8080/js/jquery.js:3:7537) 
at Function.ajax (http://localhost:8080/js/jquery.js:4:21187) 
at Function.m.each.m.(anonymous function) [as post] (http://localhost:8080/js/jquery.js:4:22297) 
at broke (http://localhost:8080/js/developer.js:24:7) 
at HTMLTableCellElement.onclick (http://localhost:8080/newDev:58:136) 

Итак, почему эта работа для одного АЯКС вызова (DELETE), но не другой (POST)?

+0

где в коде вы использовали 'toLowerCase'? – Aatman

+0

Вы пробовали тот же метод, что и с DELETE. Я имею в виду использование $ .ajax вместо $ .post –

ответ

0

В CSRF токены не были установлены на страницу с POST как так:

<meta name="_csrf" th:content="${_csrf.token}"/> 
    <meta name="_csrf_header" th:content="${_csrf.headerName}"/> 

Но на странице, где кнопка DELETE работала они были установлены. Поскольку они были неопределенными, это вызывало взрыв jQuery.

Смежные вопросы