I want to return JSON data from a resulted SQL statement in a PHP script upon pressing Submit button, but I receive null instead.
I’ll be using the returned JSON to filter-show markers on my Google Map, but for now I just want to get the data back across to my jQuery page from PHP script so I can manipulate/use it.
Submit button:
HTML
<input type="submit" id="filter" value="Filter" />
JS
$('#myform').on('submit', function(e) {
e.preventDefault();
var myData = $('#myform').serializeArray();
$.getJSON('myscript.php', myData, function(json){
alert(json);// actually filter for later
});
});
PHP script:
// action is a hidden form control I use to check if form was submitted
if(isset($_POST["action"])){
if(isset($_POST["color"]) && isset($_POST["zipcode"])){
// try to open a connection to a MySQL server
$connection = mysql_connect($host, $username, $password) or die("Could not connect" . mysql_error());
// select the active MySQL database to work with
$db_selected = mysql_select_db($database, $connection) or die("Can\'t use db:" . mysql_error());
$query = 'sql statement to return resutls based on what color and zipcode was provided';
$result = mysql_query($query) or die("Can\'t do that: " . mysql_error());
}
// close connection to the database
echo json_encode($result);
mysql_close($connection);
}
You can’t return the result object of a
mysql_querycall directly. You first have to parse it with functions likemysql_fetch_arrayor alike (PHP docu).EDIT
According to the jQuery spec for
getJSON(link), the data is sent using GET parameters and not using POST. So you would have to change all the$_POSTappearances in your PHP code to either$_GETor$_REQUEST.Besides this, you should return some error messages if your variables are not set. Right now (according to your code) just an empty document is returned.