试图返回与SQL语句生成从PHP脚本JS网页JSON数据,但得到null而不是 [英] Try to return JSON data generated with SQL statement from PHP script to JS webpage but get null instead

查看:197
本文介绍了试图返回与SQL语句生成从PHP脚本JS网页JSON数据,但得到null而不是的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要回 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆