JQuery для PHP же проблема, но указано - PullRequest
0 голосов
/ 08 марта 2012

У меня все еще есть та же проблема, что и раньше, но эта проблема более конкретна, и больше информации, вот моя форма:

   <form method="post"action="">
   <table>
    <tr> <td>Login</td></tr>
    <tr><td> <input name="LEmail" id="LEmail" value="Email"/></td>
   <td> <label class="error" id="LEmail_error">*invalid</label></td>
   </tr>
   <tr>
   <td><input name="LPassword"  id="LPassword" value="Password"/></td>
   <td><label class="error" id="LPassword_error">*invalid</label>
  </td>
  </tr>
   </table>
  <input type="button" class="LButton" id="LButton" value="submit"/>
   </form>

, а вот jquery

$(document).ready(function(){
    $('.error').hide(); 
    $(".LButton").click(function(){
        //alert("yay i was clicked");
        var LEmail=$("input#LEmail").val()
        if(LEmail==""||LEmail=="Email"){
            $("label#LEmail_error").show(); 
            return false; 
        }
        var LPassword=$("input#LPassword").val(); 
        if(LPassword==""||LPassword=="Password"){
            $("label#LPassword_error").show();
            return false; 
        }
        var info='LEmail='+ LEmail + '&LPassword=' + LPassword;
        alert(info);
        $.ajax({
            type:"POST",
            url:"process.php",
            //dataType: string; 
            data: info,

            success:function(data){
                window.location.href="process.php";
                alert(data);
            },
            error: function(xhr, type, exception){
            alert("something went wront here"); 
            alert("Error: " + type);
            console.log('@Error: '+errorThrown);
            console.log('@Status: '+status);
            console.log('@Status Text: '+xhr.statusText);
              }
        })
    });
});

иphp

   $LEmail=$_POST['LEmail']; 
    $LPassword=$_POST['LPassword'];
    /*
    if(mysql_num_rows(mysql_query("SELECT EmailAddress AND Password FROM Users WHERE EmailAddress=  $LEmail AND Password=$LPassword)>0){
    }
    */

    var_dump($LEmail);
    var_dump($LPassword);

по какой-то причине, когда страница php загружается, она утверждает, что это неопределенный индекс LEMail, то же самое для LPassword

все мои переменные равны NUM, но когда я делаю предупреждения, значения верны

Ответы [ 2 ]

1 голос
/ 08 марта 2012

Используйте URL-кодировку вокруг значений данных POST:

var info='LEmail='+ encodeURIComponent(LEmail) + '&LPassword=' + encodeURIComponent(LPassword);

Если ваши данные POST не закодированы должным образом, скрипт PHP не сможет их проанализировать.

Edit

Я думаю, что это проблема

        success:function(data){
            window.location.href="process.php";
            alert(data);
        },

Когда это происходит, ваш process.php уже обработал вызов ajax.Вы вызываете его здесь второй раз, и, очевидно, с таким перенаправлением нет данных POST, и именно поэтому вы видите undefined index ошибки.

1 голос
/ 08 марта 2012
  1. На стороне сервера сделайте var_dump($_POST); и посмотрите, что не так.
  2. Используйте firebug для двойной проверки отправленного сообщения (проверьте отправленные вами параметры POST).
  3. Дважды проверьте пробелы в определении form.
  4. Сериализуйте вашу формуиспользуя jquery вместо ручной настройки параметров.
...