簡體   English   中英

如何從MySQL數據庫獲取數據並通過PHP以JSON輸出,然后跨域ajax請求JQuery中的數據

[英]How to get data form MySQL db and output as JSON through PHP, then cross domain ajax request for the data in JQuery

我正在使用一個數字標牌播放器,該播放器允許我使用HTML和javascript來顯示事物,以我為例,我正在構建帶有產品和價格列表的菜單板。 我已經創建了一個php系統來創建產品和價格的條目,這些值存儲在MySQL數據庫中。 我想做的是讓一個PHP腳本以JSON格式輸出mysql數據,然后對產品和價格顯示一個跨域ajax請求,以使其顯示在菜單板上。 不幸的是,菜單板不支持PHP,因此我必須即興創作並通過JSON獲取數據。 在過去的幾個小時中,我一直在梳理頭發,試圖弄清楚這一點,但我似乎無法理解。 任何幫助,將不勝感激。

編輯1

我有一個php腳本和html文件,但似乎無法顯示數據。 這是下面的文件

showjson.html

<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.ajax({
 url:"http://localhost/blakewilson/api.php",
 dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
 success:function(json){
     // do stuff with json (in this case an array)
     $("#userdata tbody").html("");
    $.getJSON(url,function(data){
     $.each(data.members, function(i,user){
    var tblRow =
    "<tr>"
    +"<td>"+user.postID+"</td>"
    +"<td>"+user.postProduct+"</td>"
    +"<td>"+user.postPrice+"</td>"
    +"</tr>" ;
    $(tblRow).appendTo("#userdata tbody");
},
 error:function(){
     alert("Error");
}      
});
</script>

api.php

<?php
$link = mysql_pconnect("localhost", "root", "") or die("Could not connect");
mysql_select_db("dn_name") or die("Could not select database");
$arr = array();
$rs = mysql_query("SELECT * FROM products");
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}
echo $_GET['callback']."(".json_encode($arr).");";  // 09/01/12 corrected the statement
?>

編輯2

這段代碼為我帶來了成功的警報,因此我知道它可以工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery PHP Json Response</title>
<style type="text/css">
</style>
</head>
<body>
<div id="msg"></div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.ajax({
     url:"http://localhost/blakewilson/api.php",
     dataType: 'jsonp', 
     success:function(json){
        alert("Success");
    },
     error:function(){
         alert("Error");
    }      
});
</script>
</body>
</html>

我正在嘗試從JSON獲取一些值,如postID,postProduct和postPrice,但似乎無法弄清楚。 我對jQuery / AJAX等非常陌生。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery PHP Json Response</title>
<style type="text/css">
</style>
</head>
<body>
<div id="msg"></div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$.ajax({
     url:"http://localhost/blakewilson/api.php",
     dataType: 'jsonp', 
     success:function(json){
        // loop through the productg here
        $.each(json.members,function(i,dat){
        $("#msg").append(
        '<div class="members">'+
        '<h1>'+dat.postID+'</h1>'+
        '<p>Firstname : <em>'+dat.postProduct+'</em>'+
        '<p>SurName : <em>'+dat.postPrice+'</em></p>'+
        '<hr>'+
        '</div>'
        );
        });
    },
     error:function(){
         alert("Error");
    }      
});
</script>
</body>
</html>

編輯3

我基本上想做的就是接受這個項目: http : //tournasdimitrios1.wordpress.com/2011/11/04/how-to-generate-json-with-php-from-mysql-and-parse-it -with-jquery /並使其跨域工作。 這就是我所需要的。

編輯4

這是api.php文件的輸出。 引發錯誤“通知:未定義的索引”

Notice: Undefined index: callback in E:\xampp\htdocs\blakewilson\api.php on line 13
([{"postID":"8","postProduct":"Synthetic Oil Change","postDollar":"29","postCents":"95","postDate":"2014-08-12 12:11:00"},{"postID":"9","postProduct":"Tire Rotation","postDollar":"16","postCents":"95","postDate":"2014-08-12 12:11:10"},{"postID":"10","postProduct":"Rotate and Balance","postDollar":"39","postCents":"95","postDate":"2014-08-12 12:11:21"},{"postID":"11","postProduct":"4-Wheel Alignment","postDollar":"79","postCents":"95","postDate":"2014-08-12 12:11:35"},{"postID":"12","postProduct":"Cooling System Service","postDollar":"129","postCents":"95","postDate":"2014-08-12 12:11:51"},{"postID":"13","postProduct":"Transmission Flush","postDollar":"189","postCents":"95","postDate":"2014-08-12 12:12:07"},{"postID":"14","postProduct":"AC Performance Service","postDollar":"69","postCents":"95","postDate":"2014-08-12 12:12:19"}]);

不知道這是什么

echo $_GET['callback']."(".json_encode($arr).");";

但是您可以嘗試將其全部刪除

echo json_encode($arr);

如果需要發回2數據,只需將其構建到另一個陣列中即可。 如:

echo json_encode(array('message' => $_GET['callback'], 'data' => $arr));

以下鏈接對我來說效果很好,您可以嘗試

http://jquery-howto.blogspot.in/2013/09/jquery-cross-domain-ajax-request.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM