Cyborg
Cyborg

Reputation: 1447

How to run PHP with Ajax to validate results?

I'm making a Ajax script which validates results with PHP file before processing. Below is my Ajax script but I don't understand how to retrieve this DATA to validate.php and how to get results back from my PHP file.

<script>
    function shake(){
        if($("#pw").val()=="")
        {
            $("#sc1810").effect("shake");
        }
        else{
            var image = document.getElementById('go');
            image.src="images/loader.gif";
            var resultado="";
            $.ajax({
                url: "validate.php",
                type: "POST",
                data: "userID=" + $("#userID").val()+"&pw=" + $("#pw").val(),
                success: function(data){
                    resultado=data;
                    image.src="images/png17.png";
                    if(resultado==0)
                    {
                        $("#sc1810").effect("shake");
                        $("#pw").val("");
                        $("#pwID").text("Password");
                        $("#pw").focus();
                    }
                    else{
                        image.src="images/png17.png";
                        window.location.href = resultado;
                    }
                } 
            });   
        }
    }
</script>

How can I process this Ajax script with validate.php ?

Can it be like:

<?php
    // Get values from AJAX
    $userid = $_GET['userID'];
    $pass = $_GET['pw'];
?>

What results is this Ajax script expecting? I see resultado==0

So my question is how can I send resultado=1 with PHP to this script?

Should it be:

<?php
    // Send result to AJAX
    $resultado = 1;
?>

Thank you for helping.

Upvotes: 0

Views: 93

Answers (2)

bassxzero
bassxzero

Reputation: 5041

I think this is what you're asking for. The php script at the bottom is missing the closing tag for a reason. In the success function, after you parse the result into a json object, you can reference the members with a '.' E.G result.varName

<script>
function shake()
{
if($("#pw").val()=="")
{
$("#sc1810").effect("shake");
}
else
{
    var image = document.getElementById('go');
    image.src="images/loader.gif";
    var resultado="";
    $.ajax({
        url: "validate.php",
       type: "POST",
       data: {userID: $("#userID").val(), pw: $("#pw").val()},
       success: function(data){
                try
                {
                  var result = $.parseJSON(data);  
                   // result is now a JSON object
                 }
                 catch (e)
                 {
                  alert("JSON Parsing Failed on"  + data );
                  return 0;
                 }

       console.log(result);

       if(result.isValid === 1){
        // do something
        }

       alert(result.Message);


         resultado=data;
         image.src="images/png17.png";
         if(resultado==0)
         {
         $("#sc1810").effect("shake");
         $("#pw").val("");
         $("#pwID").text("Password");
         $("#pw").focus();
         }
         else
         {
             image.src="images/png17.png";
             window.location.href = resultado;
         }
         } 
    });   
}
}
</script>


<?php
if( !isset($_SERVER['REQUEST_METHOD']) ||  $_SERVER['REQUEST_METHOD'] != 'POST')
{
    exit;
}

if( !isset($_POST['userID']) || !isset($_POST['pw']) )
{
// need more validation than this 
    exit;
}

$output = array();

$output['isValid'] = '1';
$output['Message'] = 'Data transfered';
$output['moreData'] = false;


echo json_encode($output);

Upvotes: 1

SteveK
SteveK

Reputation: 995

Change data: "userID=" + $("#userID").val()+"&pw=" + $("#pw").val(), to:

 data: {userID: $("#userID").val(), pw: $("#pw").val()}

Also, I'd recommend setting userID and pw vars before passing it in as it is easier to read and easier to maintain.

Upvotes: 0

Related Questions