Using Ajax to Post a Variable to Another PHP File

Passing a php variable to another php file using ajax

First off, you will have to pass actual data to the your PHP script. Let's first deal with the JavaScript end. I am going to assume that your HTML code is printed using php and you are able to create something like the following: <div class=".content-short" data-id="2" />:

$(".content-short").click(function() {
// get the ID
var id = $(this).attr('data-id');
$.ajax({
type: "post",
url: "content.php",
data: 'id=' + id
dataType: "text",
success: function(response){
$(".content-full").html(response);
}
});
});

Next up is reading the value you passed in using the script:

<?php
include "mysql.php";
// Use the $_POST variable to get all your passed variables.
$id = isset($_POST["id"]) ? $_POST["id"] : 0;
// I am using intval to force the value to a number to prevent injection.
// You should **really** consider using PDO.
$id = intval($id);
$query = "SELECT Content FROM blog WHERE id = " . $id . " limit 1";
$result = mysql_query($query, $db);
while($row=mysql_fetch_array($result)){
echo $row['Content'];
}
mysql_close($db);
?>

There you go, I have modified your query to allow fetching by id. There are two major caveats:

First: You should not use the mysql_ functions anymore and they are deprecated and will be removed from PHP soon if it has not happened yet!, secondly: I cannot guarantee that the query works, of course, I have no idea what you database structure is.

The last problem is: what to do when the result is empty? Well, usually AJAX calls send and respond with JSON objects, so maybe its best to do that, replace this line:

 echo $row['Content'];

with this:

 echo json_encode(array('success' => $row['Content']));

Now, in your success function in JS, you should try to check if there a success message. First of, change dataType to json or remove that line entirely. Now replace this success function:

success: function(response){                    
$(".content-full").html(response);
}

into this:

success: function(response){
if(response.success) $(".content-full").html(response);
else alert('No results');
}

Here the deprecation 'notice' for the mysql_ functions: http://php.net/manual/en/changelog.mysql.php

Sending POST parameters between PHP files using AJAX calls

A slightly different version of the above which should help you solve your problem. For ease in debugging it is all one page but you can clearly see the script in operation once you click the button. Simply echoing javascript in the php code and hoping it will execute client side is not going to work - simply echo a message or a JSON object would be better.

<?php

if( $_SERVER['REQUEST_METHOD']=='POST' ){
ob_clean();

print_r( $_POST );

exit();
}

?>
<!doctype html>
<html>
<head>
<title>jQuery - ajax experiments</title>
<script src='//code.jquery.com/jquery-latest.js'></script>

</head>
<body>
<a id='link' role='button' href='#'>Test</a>
<script>
$('#link').click(function(e) {
e.preventDefault();
alert('function entered');
$.ajax({
url: location.href,
type: 'POST',
data: {
parameter1: 'test',
parameter2: 'test2'
},
success: function(msg) {
alert( 'wow' + msg );
}

});
alert('function end');
});
</script>
</body>
</html>

As 2 separate pages ( both in same directory otherwise edit page to the ajax target )

<!doctype html>
<html>
<head>
<title>jQuery - ajax experiments</title>
<script src='//code.jquery.com/jquery-latest.js'></script>

</head>
<body>
<a id='link' role='button' href='#'>Test</a>
<br /><br />
<script>
$('#link').click(function(e) {
e.preventDefault();

$.ajax({
url: 'jquery-ajax-target.php',
type: 'POST',
data: {
parameter1: 'test',
parameter2: 'test2'
},
success: function(msg) {
alert( 'wow' + msg );
}
});
});
</script>
</body>
</html>

And the ajax target, jquery-ajax-target.php

<?php

if( $_SERVER['REQUEST_METHOD']=='POST' ){
ob_clean();

$parameter1=( isset( $_POST['parameter1'] ) ) ? $_POST['parameter1'] : false;
$parameter2=( isset( $_POST['parameter2'] ) ) ? $_POST['parameter2'] : false;


$_POST['modified']=array(
'p1'=>sprintf('modified %s', strrev( $parameter1 ) ),
'p2'=>sprintf('modified %s', strrev( $parameter2 ) )
);


$json=json_encode( $_POST );
echo $json;

exit();
}

?>

jQuery AJAX - send file and variable to PHP in single request

You can also append the number key => value to to the form data as

form_data.append('number',  variable1);

Then in Ajax call

data: form_data,

How to use jquery ajax to get one variable from a php file to another php file

because $('.teamdelete') has no attr value ..
in your html you should put

<button class="teamdelete" value="<?php echo $arrayTeam['team_id']; ?>">Delete Team</button>

and in your javascript do this

var teamId = $(this).attr("value");

and in your php .. since the name of the post data = team_id you should do

$team_id = $_POST['team_id'];

passing a variable to php file using ajax not working

The purpose of ajax is to send data to a URL without refreshing the page. If you want redirect the page, there is no use of using ajax.

Doing an ajax call will not automatically save the data sent and the data can't be use if you redirect to that page.

Using GET

$('.women').click(function(){
var test="hello";
window.location.href = "data.php?variable=" + test;
})

On your php

if (isset($_GET['variable']))
{
echo($_GET['variable']);
}
else
{
echo ("failure");
}

Using POST, one option is to use hidden form like:

On your main page:

$('.women').click(function(){
var test = "hello";
$('[name="variable"]').val(test); //Update the value of hidden input
$("#toPost").submit(); //Submit the form
})

HTML:

<a class="nav-link active women productlink"  href="#">Women</a>

<form id="toPost" action="data.php" method="POST">
<input type="hidden" name="variable" value="">
</form>

On your data.php:

<?php 
if (isset($_POST['variable']))
{
echo($_POST['variable']);
}
else
{
echo ("failure");
}

?>


Related Topics



Leave a reply



Submit