Как минимум, значение email
должно работать ...
В любом случае, не создавайте строку вручную.Установите data
для объекта, содержащего значения:
data: {name: $('#name').val(), email: $('#email').val()},
// or
data: $('#yourformID').serialize(),
Таким образом, jQuery позаботится о правильном экранировании.
Также обратите внимание, что идентификаторы должны быть уникальными.Если у вас есть другие элементы с такими же идентификаторами дальше по странице, это не будет работать.Затем изменяет идентификаторы.
Обновление:
Поток вашего кода неверен.Эта часть:
var x = document.getElementById("name");
var email = $("input#email").val();
var dataString = 'name='+ x + '&email=' + email;
будет выполнена до окончания загрузки страницы .Это означает (а) что элементы еще не доступны и (б) даже если бы они были, пользователь не смог бы ввести какую-либо информацию.
Вы должны прочитать значения весли вы хотите отправить форму :
$(function() {
$("#button").click(callme);
function callme() {
$.ajax({
type: "POST",
url: "/temp/AjaxPostSend",
data: {name: $('#name').val(), email: $('#email').val()},
success: function(msg){
alert( "Data Saved: " + msg );
}
});
}
});
Также обратите внимание, что
var msg = $.ajax({...}).responseText;
не будет работать, поскольку запрос Ajax асинхронный .Это означает, что callme()
вернется до того, как станет доступен ответ Ajax.Текст ответа доступен в качестве аргумента для обратного вызова success
.
Исправление: Я видел async: false
, но мне показалось, что в моем мозгу была небольшая ошибка;) В этомВ этом случае вышеприведенное утверждение будет действительно работать.Но вам следует избегать синхронных вызовов Ajax (тогда он должен называться Sjax), при этом блокируется клиент.