Задать вопрос
boypush
@boypush
Geek

Почему не передается переменная через ajax?

Приветствую, подскажите почему не передаются данные в переменную, переменная просто пуста.
js jquery:
$(document).on('click', '#button', function(){
  let txt = 'Hello';
  $.ajax({
    url: 'test.php',
    type: 'POST',
    data: txt,
    success: function(data){
     $('p.out').text(data);
   },
    error: function(){
	console.log('ERROR');
    }
 })
})

test.php:
<?
$txt = $_POST['txt']; //Почему-то пусто...
echo $txt;
?>
  • Вопрос задан
  • 265 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
rpsv
@rpsv
делай либо хорошо, либо никак
Потому что data должен быть объект, а не строка:
$(document).on('click', '#button', function(){
  let txt = 'Hello';
  $.ajax({
    url: 'test.php',
    type: 'POST',
    data: { txt },
    success: function(data){
     $('p.out').text(data);
   },
    error: function(){
  console.log('ERROR');
    }
 })
})
Ответ написан
zkrvndm
@zkrvndm
Архитектор решений
Если вам нужно просто отправить голый текст, то это делается немного не так.

Пример отправки чистого текста:
$('#button').click(async function() {
	
	var txt = 'Привет, мир!';
	
	var response = await $.ajax({
		url: 'test.php',
		type: 'POST',
		contentType: 'text/plain; charset=UTF-8',
		data: txt
	});
	
	$('p.out').html(response);
	
});


На сервере принимайте и выводите полученный текст так:
<?php

// Включаем отображение ошибок:
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// Указываем браузеру, что ответ сервера
// является обычным текстом в кодир. UTF-8:
header('Content-Type: text/plain; charset=UTF-8');

// Записываем в переменную то,
// что отправил нам браузер по AJAX:
$received = file_get_contents('php://input');

// Выводим полученный текст (отдаем его в браузер):
echo 'Из фронта (браузера) был получен следующий текст: ' . $received;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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