我有一个奇怪的问题,我正在尝试使用对我的php程序的ajax调用来填充数据表,该程序从内部从数据库获取数据。

的PHP:

<?php
require_once('config.php');
$query = mysql_query("select * from productdetails");
while($fetch = mysql_fetch_array($query))
{
        $output[] = array ($fetch[0],$fetch[1],$fetch[2],$fetch[3],$fetch[4],$fetch[5]);
}
echo json_encode($output, JSON_FORCE_OBJECT);
?>


HTML(ajax呼叫):

$.ajax({
            url: 'process.php?method=fetchdata',
            data: "json",
            success: function(s){
            console.log($(s).text());
                    oTable.fnClearTable();
                        for(var i = 0; i < s.length; i++) {
                         oTable.fnAddData([
                                    s[i][0],
                                    s[i][1],
                                    s[i][2],
                                    s[i][3],
                                    s[i][4],
                                    s[i][5]
                                           ]);
                                        } // End For

            },
            error: function(e){
               console.log(e.responseText);
            }
            });


生成的输出为


  
  
  (!)不建议使用:mysql_connect():不建议使用mysql扩展,以后将删除它:在第2行的C:\ wamp \ www \ datatableone \ process.php中使用mysqli或PDO
  调用堆栈
  #TimeMemoryFunctionLocation
  10.0010242552 {main}().. \ process.php:0
  20.0010242840http://www.php.net/function.mysql-connect'target ='_ new'> mysql_connect
  ()。\ process.php:2
  
  {“ 0”:{“ 0”:“ 1”,“ 1”:“ Iron”,“ 2”:“ AX12”,“ 3”:“ Google”,“ 4”:“ 21.95”,“ 5”: “ HW”},“ 1”:{“ 0”:“ 2”,“ 1”:“ DartBoard”,“ 2”:“ AZ52”,“ 3”:“ Apple”,“ 4”:“ 12.95”, “ 5”:“ SG”},“ 2”:{“ 0”:“ 3”,“ 1”:“篮球球”,“ 2”:“ BA74”,“ 3”:“ Microsoft”,“ 4”: “ 29.95”,“ 5”:“ SG”},“ 3”:{“ 0”:“ 4”,“ 1”:“ Compopper”,“ 2”:“ BH22”,“ 3”:“ Google”, “ 4”:“ 24.95”,“ 5”:“ HW”},“ 4”:{“ 0”:“ 5”,“ 1”:“ Gas Grill”,“ 2”:“ BT04”,“ 3” :“ Apple”,“ 4”:“ 149.95”,“ 5”:“ AP”},“ 5”:{“ 0”:“ 6”,“ 1”:“ Washer”,“ 2”:“ BZ66” ,“ 3”:“ Google”,“ 4”:“ 399.99”,“ 5”:“ AP”}}


但是我所需的输出应该是:(仅json)


  {“ 0”:{“ 0”:“ 1”,“ 1”:“ Iron”,“ 2”:“ AX12”,“ 3”:“ Google”,“ 4”:“ 21.95”,“ 5”: “ HW”},“ 1”:{“ 0”:“ 2”,“ 1”:“ DartBoard”,“ 2”:“ AZ52”,“ 3”:“ Apple”,“ 4”:“ 12.95”, “ 5”:“ SG”},“ 2”:{“ 0”:“ 3”,“ 1”:“篮球球”,“ 2”:“ BA74”,“ 3”:“ Microsoft”,“ 4”: “ 29.95”,“ 5”:“ SG”},“ 3”:{“ 0”:“ 4”,“ 1”:“ Compopper”,“ 2”:“ BH22”,“ 3”:“ Google”, “ 4”:“ 24.95”,“ 5”:“ HW”},“ 4”:{“ 0”:“ 5”,“ 1”:“气体
  Grill“,” 2“:” BT04“,” 3“:” Apple“,” 4“:” 149.95“,” 5“:” AP“},” 5“:{” 0“:” 6“,” 1“:” Washer“,” 2“:” BZ66“,” 3“:” Google“,” 4“:” 399.99“,” 5“:” AP“}}


任何建议,请。

谢谢


解:

PHP:

<?php
$servername = "localhost";
$username = "root";
$password = "123456";

try {
        $conn = new PDO("mysql:host=$servername;dbname=holt", $username, $password);
        $statement=$conn->prepare("SELECT * FROM productdetails");
        $statement->execute();
        $results=$statement->fetchAll(PDO::FETCH_ASSOC);
        $json=json_encode($results);
        echo $json;
    } catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
?>


感谢您的建议。

最佳答案

如注释中所述,您应该关闭警告,或者更好的方式是,以不产生警告的方式编写代码。

在关闭警告时:
Turn off warnings and errors on php/mysql

您可以使用@符号抑制内联错误,该符号是php中的错误控制运算符。将@放在mysql_connect()行的开头应该可以摆脱它,但是您应该切换到PDO!

在PDO(我推荐并使用)上:
http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

PDO保护您免受SQL注入的侵害,并允许将查询发送到数据库并事先进行构造,然后再通过“占位符”发送输入。

关于javascript - 我的ajax调用返回带有json数据的html,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34110028/

10-12 02:14