试图返回与SQL语句生成从PHP脚本JS网页JSON数据,但得到null而不是 [英] Try to return JSON data generated with SQL statement from PHP script to JS webpage but get null instead
问题描述
我要回 JSON 来自于pressing一个PHP脚本导致SQL语句数据提交按钮,但我收到空
代替。
我将使用返回的JSON过滤,显示标记在我的谷歌地图,但现在我只想取回数据跨越从PHP脚本我jQuery的网页,所以我可以操控/使用的
提交按钮
HTML 的
<输入类型=提交ID =过滤器值=过滤器/>
JS 的
$('#MyForm的')。在('提交',函数(E){
即preventDefault();
。VAR的myData = $('#MyForm的')serializeArray();
$ .getJSON('myscript.php',myData的,功能(JSON){
警报(JSON); //实际上筛选了以后
});
});
PHP脚本
//动作是一个隐藏的表单控件我用它来检查,如果表单提交
如果(使用isset($ _ POST [行动])){
如果(使用isset($ _ POST [颜色])及和放大器;使用isset($ _ POST [拉链code])){
//尝试打开一个MySQL服务器的连接
$连接=的mysql_connect($主机,$的用户名,密码,$)或死亡(无法连接mysql_error());
//选择当前MySQL数据库一起工作
$ db_selected = mysql_select_db($数据库,$连接)或死亡(可以\'吨使用DB:mysql_error());
$查询='SQL语句基础提供了什么样的颜色和拉链code以返回resutls;
$结果= mysql_query($查询)或死亡(可以\'吨做到这一点:mysql_error());
}
//到数据库紧密结合
回声json_en code($结果);
则mysql_close($连接);
}
您不能返回的的mysql_query
直接调用的结果对象。你首先要与像 mysql_fetch_array
函数或类似(的 PHP实况)。
...
$结果= mysql_query($查询);
如果($结果=== FALSE){
死亡(可以\'吨做到这一点:mysql_error());
}
$ retVal的=阵列();
而($行= mysql_fetch_array($结果)){
$ retVal的[] = $行;
}
...
回声json_en code($ retVal的);
修改
据jQuery的规范了的getJSON
(链路的),该数据被使用GET参数使用POST发送和不。所以,你将不得不改变所有的 $ _ POST
出现在你的PHP code为 $ _ GET
或 $ _ REQUEST
。
除此之外,你应该,如果你的变量没有设置返回某些错误消息。现在,(根据您的code)只是一个空洞的文档返回。
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_query
call directly. You first have to parse it with functions like mysql_fetch_array
or alike (PHP docu).
...
$result = mysql_query($query);
if ( $result === false ) {
die("Can\'t do that: " . mysql_error());
}
$retVal = array();
while( $row = mysql_fetch_array( $result ) ) {
$retVal[] = $row;
}
...
echo json_encode( $retVal );
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 $_POST
appearances in your PHP code to either $_GET
or $_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.
这篇关于试图返回与SQL语句生成从PHP脚本JS网页JSON数据,但得到null而不是的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!