Мой вызов JQuery Ajax выдает ошибку: ОЖИДАЕМЫЙ POST У меня та же проблема, что и у парня в ссылке. Мне нужно опубликовать вместо получения, но я не могу напрямую изменить код ajax. Я должен делать это из ...

-1
skethoskope 31 Мар 2021 в 00:42

1 ответ

Лучший ответ

Вы можете удалить прослушиватель кликов и добавить свой собственный с измененным кодом:

$('button').off('click').click(() => {
  $.ajax('ajax.php', {
    data: { submission: JSON.stringify({ prop: $('text_area').val() }) },
    success: success_callback,
    type: 'POST'
  })
})

Поскольку success_callback определен в глобальной области видимости, он также должен вызываться вашим кодом.


Другой вариант - это обезьяна-патч $.ajax.

Очень грязный, но тоже сработает ... Примерно так:

const oldAjax = $.ajax
$.ajax = function (url, opts) {
  if (url !== 'ajax.php') return oldAjax.apply(this, arguments)
  return oldAjax.call(this, url, { ...opts, type: 'POST' })
}

Это заменит $.ajax вашей собственной функцией, которая затем либо просто вызовет исходную функцию с неизмененными аргументами, если url не ajax.php, либо, если равно ajax.php, вставьте type: 'POST' в объект параметров.

См. Также: https://www.audero.it/blog/2016/12/05/monkey-patching-javascript/#using-monkey-patching-to-change-a-method

(Примечание: в обычных обстоятельствах это не лучший способ!)

0
CherryDT 30 Мар 2021 в 22:05