Неожиданный ключ в СООБЩЕНИИ jQuery AJAX

#php #jquery #ajax

#php #jquery — запрос #ajax #jquery

Вопрос:

У меня есть этот звонок:

 bindAutoComplete('pro_title');
  

который использует эту функцию для выполнения вызова jQuery AJAX:

 function bindAutoComplete(id) {
    $("#"   id).keyup(function() {
        if (this.value.length > 1) {
            $.post("/ajax/autocomplete" , {id: this.value }, function(data) {
               // do stuff here...
            });
        }
    });
}
  

который работает с этим PHP-скриптом:

 public function autocompleteAction()
{
    if ($this->getRequest()->isPost()) {
        echo print_r($this->getRequest()->getPost());
    }
}
  

Когда я запускаю эти скрипты, PHP выдает эхо:

 Array ([id] => test) 1
  

где ‘test’ в данном случае — это значение в this.value из вызова AJAX.

То, что я ищу, [id] должно быть заменено на pro_title .

Пожалуйста, помогите!

Комментарии:

1. что вы имеете в виду?? просто замените {id: this.value} на {pro_titile: this.value}

2. Почему у вас есть echo print_r( ? print_r Вам здесь не нужно, это бессмысленно.

3. @Ракета, потому что я тестировал. Print_r не находится в производстве.

Ответ №1:

{id: this.value } должно быть {id: id }..

 function bindAutoComplete(id) {
    $("#"   id).keyup(function() {
        if (this.value.length > 1) {
            $.post("/ajax/autocomplete" , {id: id }, function(data) {
               // do stuff here...
            });
        }
    });
}
  

Если вы также хотите отправить значение, вы можете сделать {id: id, value: this.value }

Ответ №2:

Вы имеете в виду что-то вроде этого:

 function bindAutoComplete(id) {
    $("#"   id).keyup(function() {
        if (this.value.length > 1) {
            $.post("/ajax/autocomplete" , {id: id }, function(data) {
                // do stuff here...
            });
        }
    });
}