@Newbeenew

Почему не работает код?

Привет всем, помогите разобраться плз:

так код работает нормально и в php я переменную $_POST["fioField"] вижу
$('body').on("change",".cartInput", function() {
					$.ajax({
		                        type: 'post',
		                        url: "../cart/index.php?change=true", 
		                        data: {'fioField':$('#fioField').val()} 
			                })
					
			})


а вот так уже нет

$('body').on("change",".cartInput", function() {
				    var currentId = $(this).attr('id');

				        //alert(currentId);
					$.ajax({
		                        type: 'post',
		                        url: "../cart/index.php?change=true", 
		            
		                       data: {'currentId':$(this).val()}
			               })
					
			})


Alert идентификатор показывает правильно
  • Вопрос задан
  • 98 просмотров
Решения вопроса 1
Ivanq
@Ivanq
Знаю php, js, html, css
1 код
data: {'fioField':$('#fioField').val()}

2 код
data: {'currentId':$(this).val()}

В 1 примере посылается значение под именем fioField, во втором - currentId.

UPD

TLDR

var a = "name";

{a: 1}; // ключ a
{"a": 1}; // ключ a
{[a]: 1}; // ключ name


Дело в том, что синтаксис {name: value} - это создание свойства "name" со значением value. Кавычки опциональны, например, могут быть полезны, если имя содержит спецсимволы, которые без кавычек будут обрабатываться как управляющие конструкции (например, if, точка и т.д.)

Для того, чтобы взять имя из переменной, используется синтаксис {[var]: value}.

Если вкратце, то [var] не является строкой или чем-то, что можно записать без кавычек, поэтом [var] выполняется как выражение. [var] - определение массива с элементом var. Так как ключ объекта в JavaScript - всегда строка (да, у массивов на самом деле строковые индексы), [var] преобразуется в строку, а это то же самое, что и var.toString() (преобразовать в строку само значение).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
slo_nik
@slo_nik
Добрый день.
В первом случае у Вас с массиве POST индекс 'fioField'
А во втором имя индекса будет иметь значение currentId.
Вот и проверяйте не $_POST["fioField"], а $_POST["значение_currentId"]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы