2011-01-31 2 views
0

EDITED: после двух часов, пытаясь решить мою проблему, я был запутан, поэтому я пришел в StackOverflow, я прочитал связанные вопросы, которые не решили мою проблему, и, наконец, я попросил помощи , Я упростил свой код и разместил этот вопрос. Испытывая код, который вы мне дали, я мог видеть, где я терпел неудачу. Это смущает: перед вызовом $ .post я менял содержимое формы div, чтобы показать gj-загрузчик ajax, поэтому, когда $ .post был вызван, входы были удалены.

Hello. Я тестирую функции JQuery AJAX, и я не могу отправить данные по $.post. Это процесс:

  • form.php: форма HTML и JQuery скрипт, переводящее значение от $ .post и предупреждений результата
  • process.php: PHP скрипт, который принимает значения, работа с ними и что-то возвращает.

ФОРМА

<form action="#" method="post"> 
<label for="name">Your name</label> 
<input type="text" name="name" id="name" /> 
<label for="email">Your email</label> 
<input type="text" name="email" id="email" /> 
<input type="button" value="send" id="btnSend" /> 
</form> 

Jquery

function sendAjaxPost(){ 

     $.post('process.php',{ 
       name: $('#name').val(), 
     email: $('#email').val() 
     }, 
     function(data){ 
      alert(data); 
     }); 
     } 

$('#btnSend').click(function(){ 
    sendAjaxPost(); 
} 

process.php

foreach($_POST as $key => $value) 
{ 
echo $key . ' => ' . $value . '<br/>'; 
} 

Я не могу отправить $ ('# имя'). Вал(), но если я отправляю строку, все работает нормально. У меня есть предупреждение $ ('# name'). Val() внутри функции jQuery, и это можно прочитать. Я следил за синтаксисом, указанным в $.post.

Может ли кто-нибудь дать мне свет? Заранее спасибо

+0

что вы имеете в виду, когда вы говорите, «но если я посылаю строку все работает отлично.» ?? – tkt986

+0

Вы уверены, что поле ввода является единственным в DOM с id = "name"? – Ian

+0

@tsegay, если я отправлю в $ .post-> имя: 'My name', email: 'My email' вместо имени: $ ('# name'). Val() – FranQ

ответ

1

Если вы можете прочитать поля ввода на функцию, вы можете попробовать это,

function sendAjaxPost(){ 
     name=$('#name').val(); 
     email=$('#email').val(); 
     alert(name); 
     alert(email); 
     //If this two alerts the name and email, try with $.get(); 
     $.post('process.php',{ 
       name: name, 
       email:email 
     }, 
     function(data){ 
      alert(data); 
     }); 
     } 
+0

Вы не смешиваете JS и PHP sintax ?. Я пробовал то, что вы предлагаете: var name = $ ('# name'). Val(); Но он не работал – FranQ

+0

где смешанный? – tkt986

+0

Вы правы. Ваш код тоже работает для меня тоже. Я нашел свою ошибку. Я собираюсь обновить свой вопрос. Спасибо за вашу помощь! – FranQ