AJAX - отправка JSON без URL-кодирования - PullRequest
1 голос
/ 12 июня 2019

ЦЕЛЬ И ФОН

Сравните два образца текста. Эти образцы текста являются описаниями продуктов. Образец 1 извлекается из текстовой области в форме. Образец 1 отправляется через AJAX в другой файл для сравнения с образцом 2, который извлекается из базы данных.

Я пытаюсь отправить как объект JSON, потому что предполагал, что это позволит мне обойти отправку данных, закодированных в виде URL, в виде простого запроса POST / GET.

ВЫПУСКА

Когда я отправляю образец 1 через AJAX в объекте JSON, он URL-кодируется с + для пробелов и т. Д. Мне нужно, чтобы текст отправлялся «как есть», чтобы его можно было сравнить. URL-декодирование не будет работать, так как в действительности может быть + и другие символы, которые являются частью истинного примера 1.

ВОПРОС

Как отправить пример 1 без URL-кодирования данных?

CODE

        // we need the product id and description
        var pid = $("input[name='pid']").val();
        var descr = $("textarea[name='descr']").val();
        // put in a json object so we can see the real data
        var $obj = {
            "pid": pid,
            "descr": descr // Sample 1
        }
        // make the call and return the promise
        return $.ajax({
            type: 'POST',
            url: 'request_file.php',
            dataType: "json",
            data: $obj
        });

1 Ответ

1 голос
/ 12 июня 2019

Из jquery Документы для $.ajax API,

contentType (default: 'application/x-www-form-urlencoded; charset=UTF-8')

Таким образом, по умолчанию он будет отправляться только как URL-кодированный.Обновите вызов AJAX следующим образом, установив правильный параметр.

 return $.ajax({
            type: 'POST',
            contentType :'application/json',
            url: 'request_file.php',
            dataType: "json",
            data: $obj
        });

Параметр contentType обычно принимает в качестве значения тип MIME.Всегда необходимо установить правильный тип MIME для сценария использования при отправке запроса, а также использовать тот же тип MIME для чтения данных из запроса в серверной части.

Вы можете ссылаться здесь для различных доступных типов MIME .

...