Shivam Pandya
Shivam Pandya

Reputation: 1061

Phonegap, AJAX - PHP Array Issue

I am in trouble while pass user's input value via array from HTML (Using AJAX) To php page (In fetching Array) . Is method I use is correct ? I didn't get value in my PHP page.

First I assign user's value to variable

var first_name = $("[name='first_name']").val();
var last_name = $("[name='last_name']").val();

Then Create Its array.

var MyArray = {"firstname": first_name, "lastname": last_name};

And Here How I pass value to external server's php file

$.ajax({
        type: "POST",
        url: GolbalURL+"updategeneralinformation.php",
        data: "userarray="+ MyArray,
        dataType:'json',
        success: function(response){
            if(response.success) {
                navigator.notification.alert(
                    'Ok',
                    // No need for Callback function
                    'Ok',
                    'Ok'
                )
            }
            else {
                navigator.notification.alert(
                    'Something went wrong while attempting update',
                    // No need for Callback function
                    'Atempt Fail',
                    'Try Again'
                )
            }
        },
        error: function(error){
            navigator.notification.alert(
                    error,
                    // No need for Callback function
                    'Something wrong',
                    'Try Again'
                )
        }
    });
    return false;

Now PHP File code for retrieve Requested array from HTML page and run PHP-MySQL Update Query

$get_array = $_REQUEST['userarray'];
$query = mysql_query("UPDATE ".$db.".users SET first_name='$get_array["firstname"]', last_name='$get_array["lastname"]' ");
mysql_query($query);
   if (!mysql_query($query, $con)) {
  //die('Error: ' . mysql_error());
  $response['success'] = false;
} else {
  $response['success'] = true;
}

Upvotes: 0

Views: 104

Answers (3)

vamsisnikky
vamsisnikky

Reputation: 11

var MyArray = {"firstname": first_name, "lastname": last_name};
data: MyArray,

Upvotes: 0

kyo
kyo

Reputation: 610

You've convert your javascript array into a string when you do this:

data: "userarray="+ MyArray,

So basically, php just gets a string. You may want to do this in your javascript:

var MyArray = {"firstname": first_name, "lastname": last_name};
data: MyArray,

Or

data: {"firstname": first_name, "lastname": last_name},

And in your php script:

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];

Upvotes: 1

user2289510
user2289510

Reputation:

Use

data: MyArray,

or

data: {firstname: first_name, lastname: last_name},

instead of

data: "userarray="+ MyArray,

at server side

$get_array = $_POST;

and

$query = mysql_query("UPDATE ".$db.".users SET first_name='" . $get_array["firstname"] . "', last_name='" . $get_array["lastname"] . "'");

Note: the mysql_query is deprecated, use pdo or mysqli, and its unsecure in this form (mysql_real_escape_string() missing)

Upvotes: 1

Related Questions