2012-03-26 1 views
0

Я использую CakePHP, и с нескольких дней я пытаюсь сохранить переменную скрипта java с помощью ajax (jQuery) в базе данных mysql.Как сохранить переменную JS в базе данных

Я использую следующий код, чтобы сделать это:

<!-- document javascripts -->  
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#saveForm').submit(function(){ 
      var formData = $(this).serialize(); 
      var formUrl = $(this).attr('action'); 
      $.ajax({ 
       type: 'POST', 
       url: formUrl, 
       data: formData, 
       success: function(data,textStatus,xhr){ 
         alert(data); 
       }, 
       error: function(xhr,textStatus,error){ 
         alert(textStatus); 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 

Но когда я нажимаю на кнопке отправки, Ajax разместит весь sourcode моей страницы. = (

Что мне нужно, это функция для хранения переменной Java Script в мою базу данных, но без перезагрузки страницы.

Я благодарен за любую помощь =)

+0

Страница также перезагружается? – r0m4n

+0

Нет, страница не перезагружается. Это прекрасно работает. Даже переменная 'formData' заполнена соответствующими данными. Но ajax по-прежнему показывает весь исходный код = ( – Chronnie

ответ

1

Вы сказали JQuery сериализации формы элемент. То есть, преобразуйте элемент формы в текстовую строку. Другими словами, вы говорите ему, чтобы получить HTML-код формы и отправить его на ваш сервер.

Я не знаю (или хочу знать), какой правильный способ отправки данных формы AJAX есть, но я знаю, что вам нужно действительно что-то вроде доступа к полям формы, чтобы получить их значения.

0

Проблема может быть в параметре данных .. $('#saveForm').serialize(); должно быть нормально

+0

Она получает URL-адрес от атрибута действия формы, очевидно, что это не так, потому что, как сказано: «Ajax опубликует весь код моей веб-страницы». Проблема заключается в том, что это сообщение, а не там, где это происходит. –

1

Мой JS немного ржавый, но попробуйте изменить:

var formData = $(this).serialize(); 

To:

var formData = $('#saveForm').serialize(); 

Или:

var formData = $('#saveForm').val().serialize(); 

Предполагается, что вы хотите сериализовать и сохранить html всей формы.

Чтобы вытащить только значение из формы (я не думаю, что вам нужно сериализовать) попробовать:

var formData = $('#saveForm #someInputName').val(); 

Конечно изменения someInputName к тому, что фактическое имя поля, которое вы хотите сохранить.

+0

Привет, спасибо всем за ответ. =) Теперь я использую следующий оператор: 'var formData = $ ('# saveForm'). val();' Когда я распечатываю эту переменную, она отлично работает. Но значение переменной данных из блока ajax по-прежнему остается всей страницей = ( – Chronnie