我正在尝试从数据库返回数据并将其转换为json并将其发送回我的javascript。但是它没有按计划工作,它在javascript上以数组形式返回。
的Javascript
function getData(id) {
$.ajax({
url: 'some url',
crossDomain: true,
type: 'post',
data: {
id: id
},
success: function (data) {
var json = jQuery.parseJSON(data);
alert(data);
},
});
};
PHP
<?php
header("access-control-allow-origin: *");
$dbhost = 'you dont need this info';
$dbuser = 'you dont need this info';
$dbpass = 'you dont need this info';
$db = 'you dont need this info';
$dbserver = mysql_connect($dbhost, $dbuser, $dbpass) or die("Unable to connect to MySQL: " . mysql_error());
mysql_select_db($db) or die("Unable to select database: " . mysql_error());
if (isset($_POST['id'])) {
$ID = $_POST['id'];
}
echo $ID;
$result = mysql_query('SELECT * FROM clubmember WHERE clubID = "' . $ID . '"');
$row = mysql_fetch_assoc($result);
$name = $row['name'];
$clubID = $row['clubID'];
$lID = $row['lID'];
$sName = $row['sName'];
$desc = $row['description'];
$json = json_encode(array(
'name' => $name,
'clubID' => $clubID,
'lID' => $lID,
'sName' => $sName,
'description' => $desc
));
echo $json;
?>
[object Object], [object Object]
形式的javascript提醒...
不应该是这种情况......
答案 0 :(得分:1)
不要在PHP中回显$ ID。使用jQuery的ajax dataType属性并将其设置为json。使用默认的javascript json解析器。
答案 1 :(得分:1)
尝试提醒json
而不是data
?
答案 2 :(得分:1)
Javascript返回一个对象,因为实际上是在警告一个对象。试试alert(data.name);
或alert(data.clubID);
,它会起作用。
答案 3 :(得分:1)
您应该指定ajax调用请求的数据类型,否则jQuery将根据MIME类型“智能地”检测。如果ajax调用接收到json数据,它将把它用作JavaScript对象,这就是你获得该警报的原因。
答案 4 :(得分:1)
如果没有给出dataType参数,则.ajax()调用将“智能地猜测”所请求页面返回的内容。
对于JSON,它会将JavaScript对象传递给success函数。
在审核了你的问题之后,我相信我明白你的意思。
您期望的是单个对象(使用SQL查找,如非常不安全的方式所述),具有5个属性,名称,clubID,lID,sName和描述。
但是,您回来的似乎是多行只有两个属性?
你所说的是,虽然php脚本回显正确的值(一行),但JSON正在接收多个值(/行)。
你确定PHP从AJAX调用中收到了正确的ID吗? / p>
答案 5 :(得分:1)
这是对的。
JSON是一个对象。 a.k.a Javascript对象表示法。那应该是以防万一。
它应该包含您的数据。试试data.*
。
顺便说一下,如果在将用户与任何SQL查询一起使用之前没有清除来自用户的数据,那将会造成麻烦。
使用基本示例查看它的实际操作:
// $_POST['id'] = '" OR 1"'
$result = mysql_query('SELECT * FROM clubmember WHERE clubID = "'.$ID.'"');
您的查询现在是
SELECT * FROM clubmember WHERE clubID ="" OR 1 ""
因为1总是如此,我现在能够拿走你所有的俱乐部会员桌。欢呼声。
答案 6 :(得分:1)
即使parseJSON
返回一个对象,执行console.log也应该显示[Object, Object, ...]
这是一个对象数组