2014-05-17 4 views
-1

Только некоторые проблемы с устранением неполадок AJAX.Post Input OnChange с AJAX

Контекст: Построение большого стола с входными данными, которые должны размещаться после их заполнения. Думал, что триггер onchange будет работать лучше всего.

Вопрос: Я не могу заставить javascript передавать значение ввода на лист .php.


header.php

$(document).ready(function(){ 
    $(".matchedit").onchange(function postinput(){ // Problem 1: change(
    var matchvalue = $(this).value; // Problem 2: $(this).val(); 
    $.ajax 
     ({ 
      url: 'matchedit-data.php', 
      data: {matchvalue: matchvalue}, 
      type: 'post' 
     }); 
    }); 
}); 

page.php

<tr> 
    <td> 
    <input name="grp1" type="text" class="matchedit" onchange="postinput()"> 
    </td> 
</tr> 

matchedit-data.php

$entry = $_POST['matchvalue']; 
$conn->query("UPDATE matches SET grp = '$entry' WHERE mid = 'm1'"); 

Заранее благодарен!

+2

Остерегайтесь [SQL Injection] (http://en.wikipedia.org/wiki/SQL_injection)! – undefined

+0

спасибо - но это будет доступно только для моего использования и не будет публичной страницей. –

+1

Это имеет смысл. Обратите внимание, что для чтения значения используемого jQuery метода ввода .val() 'следует использовать вместо этого. Также вы должны использовать метод '.on ('change')' или 'change()', объект jQuery не имеет метода 'onchange'. – undefined

ответ

6

Для считывания значения обернутого ввода jQuery следует использовать метод .val(), здесь value здесь возвращает значение undefined. Также вы должны использовать метод .on('change') или change(), объект jQuery не имеет метода onchange.

$(document).ready(function(){ 
    $(".matchedit").on('change', function postinput(){ 
     var matchvalue = $(this).val(); // this.value 
     $.ajax({ 
      url: 'matchedit-data.php', 
      data: { matchvalue: matchvalue }, 
      type: 'post' 
     }).done(function(responseData) { 
      console.log('Done: ', responseData); 
     }).fail(function() { 
      console.log('Failed'); 
     }); 
    }); 
}); 
+0

Теперь это сообщение, однако его буквально стреляющие пробелы. Значение не подбирается. Когда я назначаю var matchvalue значение вручную, оно проходит. Что-то не работает с моим исполнением $ (this) .val() –

+0

@JamesPatrick Вы можете проверить длину значения '$ .trim (matchvalue) .length', если его больше 0, отправьте запрос иначе' return'. – undefined

+0

Это сработало отлично. Спасибо –

Смежные вопросы