我正在使用ajax调用从我的mysql数据库中获取一些数据。这是我的ajax调用:
$.ajax({
type: "POST",
url: "fetch.php",
data: id,
success: function(msg) {
var record = JSON.parse(msg);
$("#name").val(record.name);
$("#description").val(record.description);
switch(record.category) {
case ("Residential"):
$("#category").val("residential");
break;
case ("Modernisation & Domestic Extensions"):
$("#category").val("modernisation");
break;
case ("Feasibility Layouts"):
$("#category").val("feasibility");
break;
case ("Master Planning"):
$("category").val("master");
break;
default:
$("category").val("");
};
switch(record.featured) {
case ("y"):
$("#featured").val("y");
break;
default:
$("featured").val("n");
};
}
})
这是我的php文件:
<?php
$dbc = mysqli_connect('XX','XX','XX','XX');
$id = $_POST['id'];
if($dbc) {
$row = fetchDataFromRecordWithId($dbc,$id);
}
else {
echo 'Database error';
}
function fetchDataFromRecordWithId($dbc,$id) {
$q = "SELECT * FROM Projects WHERE id = ".$id;
$r = mysqli_query($dbc, $q);
$row = mysqli_fetch_array($r, MYSQLI_ASSOC);
mysqli_close($dbc);
return $row;
}
echo json_encode($row);
?>
一切工作完美无瑕,但很快当我尝试在php文件中添加if语句来检查是否有任何POST数据时,我的ajax调用就没有得到任何响应。我尝试了不同的方法:
<?php if(isset($_POST)) { .. my whole php code here .. } ?>
<?php if(!empty($_POST)) { ..my whole php code here .. } ?>
<?php if($_POST) { .. my whole php code here .. } ?>
<?php if($_POST['id']) { .. my whole php code here .. } ?>
但是什么都不起作用!当我将使用上面列出的这些if语句中的任何一个时,Ajax调用不会获得json数据。
我不能检查POST数据并让它保持原样,但我想以正确的方式这样做。
看起来if语句没有执行(但POST数据必须在那里,因为我能够在不使用if语句时获取$_POST['id']
值)。
我也试着把echo json_encode($row)
放在if语句之外,但也没有用。你知道出什么问题了吗?
发布于 2013-03-17 23:37:11
$.ajax({
type: "POST",
url: "fetch.php",
data: id,
http://api.jquery.com/jQuery.ajax/
数据:...对象必须是键/值对。
所以把这句话写下来
data: { id : id },
相反,它应该是有效的。
发布于 2013-03-17 23:07:11
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
die("Invalid request method: " . $_SERVER['REQUEST_METHOD']);
}
if (isset($_POST['id'])) {
... db code here ...
}
还要注意的是,您的SQL injection attacks是完全开放的。
发布于 2013-03-18 00:38:14
您可以尝试对您的代码执行以下测试
function $("body").append(msg)
) {}
错误:function(xhr,err){ alert("readyState:“+xhr.readyState+”\n状态:"+xhr.status);alert("responseText:"+xhr.responseText);}
https://stackoverflow.com/questions/15462265
复制相似问题