Ajax Запускает заданный запрос при отправке на основе выбранного переключателя

#php #ajax #login #radio-button

#php #ajax #аутентификация #переключатель

Вопрос:

HTML:

 <form style="margin:5px 0;" action="#" method="post"> 
            Buyer <input type="radio" name="addType" value="Buyer" />
            amp;nbsp;amp;nbsp;Merchant <input type="radio" name="addType" value="Merchant" />
        </form>
        <form id="NewBuyerRegHp" method="post" action="check.php">
            Username or Email: <input type="text" name="userOrEmail" class="UserLogin" value="Username" onFocus="clearText(this)" /> <br />
            Password: amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;amp;nbsp;<input type="password" name="userPass" class="UserLogin" value="Password" onFocus="clearText(this)"  /> <br />
            <input type="submit" name="SubmitNewBuyerHp" value="Secure Login" />
        </form>
  

PHP

 $NewBuyerLoginCheck = mysql_query("SELECT uUName, uEmail, uUPass, dynamSalt FROM User WHERE uUName OR uEmail = '".mysql_real_escape_string($_POST['userOrEmail'])."' AND uUPass = sha2(concat(dynamSalt, '".mysql_real_escape_string($_POST['userPass'])."'), 512) ")or die(mysql_error());

$NewMerchLoginCheck = mysql_query("SELECT mUsername, mEmail, mUPass, mdynamSalt FROM Merchant WHERE mUsername OR mEmail = '".mysql_real_escape_string($_POST['userOrEmail'])."' AND mUPass = sha2(concat(dynamSalt, '".mysql_real_escape_string($_POST['userPass'])."'), 512) ")or die(mysql_error());


if(mysql_num_rows == 1){
echo "Success"; 
//then redirect the users homepage
}
else(mysql_num_rows == 0){
echo "Error"; 
// then redirect to original login form, for relogin
}
  

Когда выбран переключатель: value="Buyer" , он должен запускать запрос $NewBuyerLoginCheck

Когда выбран переключатель: value="Merchant" , он должен запускать запрос $NewMerchLoginCheck

Как мне сделать это на основе переключателя, выбранного при отправке с использованием Ajax?

Комментарии:

1. Я бы подумал об этом, но тогда люди, которые отключают JS, для которых это не сработает. Правильно?

Ответ №1:

html-код, если вы используете jQuery, вы можете сделать это:

 <script type="text/javascript" src="jquery-1.4.3.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){           
            $('#NewBuyerRegHp').submit(function() {
                $.ajax({
                    type: 'POST',
                    url: $(this).attr('action'),
                    data: $(this).serialize(),
                    success: function(data) {
                        $('#ajax').html(data);
                    }
                })
                return false;
            });
        });
</script>
<form id="NewBuyerRegHp" method="post" action="check.php" style="margin:5px 0;">
    Buyer <input type="radio" name="addType" value="Buyer" checked="checked" /> <!-- Default value is checked -->
    Merchant <input type="radio" name="addType" value="Merchant" /><br />
    Username or Email: <input type="text" name="userOrEmail" class="UserLogin" placeholder="Username" /> <br />
    Password: <input type="password" name="userPass" class="UserLogin" placeholder="Password"  /> <br />
    <input type="submit" name="SubmitNewBuyerHp" value="Secure Login" />
</form>
<div id="ajax"></div> <!-- Check return value if using ajax -->
  

Php-код:

 <?php
if (isset($_POST['addType']) amp;amp; isset($_POST['userOrEmail']) amp;amp; isset($_POST['userPass'])){
    if($_POST['addType'] == 'Buyer'){
        $NewBuyerLoginCheck = mysql_query("SELECT uUName, uEmail, uUPass, dynamSalt FROM User WHERE uUName OR uEmail = '".mysql_real_escape_string($_POST['userOrEmail'])."' AND uUPass = sha2(concat(dynamSalt, '".mysql_real_escape_string($_POST['userPass'])."'), 512) ") or die(mysql_error());
    } elseif($_POST['addType'] == 'Merchant'){
        $NewMerchLoginCheck = mysql_query("SELECT mUsername, mEmail, mUPass, mdynamSalt FROM Merchant WHERE mUsername OR mEmail = '".mysql_real_escape_string($_POST['userOrEmail'])."' AND mUPass = sha2(concat(dynamSalt, '".mysql_real_escape_string($_POST['userPass'])."'), 512) ") or die(mysql_error());
    }
    if(mysql_num_rows == 1){
        echo "Success";
        //then redirect the users homepage
    } elseif(mysql_num_rows == 0){
        echo "Error";
        // then redirect to original login form, for relogin
    }
}
?>
  

Ответ №2:

Используйте этот пример

     $('input:radio').click(function(){
if($("input:checked").val() == "Buyer")
{
    //ajax call to php file and pass a parameter buyer
}
else{
    //ajax call to php file and pass a parameter merchant        
}
});
  

и получает значения post в коде php и в зависимости от переданного параметра выполняет запрос

Комментарии:

1. как бы я передал параметры?

2. //ajax вызывает php-файл и передает параметр buyer $.get(example.php,{param:’Buyer’},function(){ }); для этого используется вызов get, поэтому в вашем php-файле выполните $_GET[‘param’]