user1473497
user1473497

Reputation: 23

Retrieve PHP Variable via jQuery

I know this questions has been asked in various forms, but I've been unable to find a response that squares with what I'm trying to accomplish. Total amateur, so any additional pointers are appreciated.

The Task:
Use a form on page1 to post data to PHP file, which then searches the MySQL table for rows corresponding to the $_POST[]. Then, the PHP file echoes the result as JSON_encode($variable). From there, the PHP file redirects the user back to page1, which (in theory) has a JQuery script that calls the $variable from the PHP file and create html with the data.

The Code:
PHP

<?php
ob_start();
session_start();
session_save_path('path');
mysql_connect("", "", "")or die(); mysql_select_db("db")or die();
$pname = $_POST['country'];
$result = mysql_query("SELECT * FROM project WHERE name = '$pname'");      
$array = mysql_fetch_row($result);  
echo json_encode($array);
header("page1.html");
?>

html/jquery/ajax

<script type="text/javascript">// <![CDATA[
$(document).ready( function() {
    $.ajax({
        type: 'POST',
        url: 'page.php',
        data: '',
        dataType: 'json',
        cache: false,
        success: function(result) {
            $('#content1').html(data);
        },
    });
});
// ]]></script>
<div id="content1"></div>

The php script works and echoes the JSON encoded variable, but nothing on #content1... I have a feeling either my code is wrong, or the data is lost while posting to the PHP file and then redirecting.

Upvotes: 0

Views: 178

Answers (2)

Kevin Pei
Kevin Pei

Reputation: 5872

You're trying to append the variable data to the content but the variable is called result. Try this:

<script type="text/javascript">// <![CDATA[
$(document).ready( function() {
$.ajax({
type: 'POST',
url: 'page.php',
data: '',
dataType: 'json',
cache: false,
success: function(result) {
$('#content1').html(result);//<- this used to be $('#content1').html(data);
},
});
});
// ]]></script>
<div id="content1"></div>

Additionally, as many have pointed out you are simply outputting the json at the moment - there is nothing in place to generate the table.

Upvotes: 1

MIIB
MIIB

Reputation: 1849

Change $('#content1').html(data) to $('#content1').html(result);

Upvotes: 0

Related Questions