我是一个jquery新手,我想知道如何使用如果否则:
在服务器端有如果表示行数等于0和else一些JSON部分。
$age= mysql_query("SELECT title FROM parent WHERE id ='$name'");
$age_num_rows = mysql_num_rows($age);
if ($age_num_rows==0)
{
echo "true";
}
else
{
$sql ="SELECT * FROM parentid WHERE id = '$name'"; //$name is value from html
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
$abc_output = array('title' => $row['title'],'age' => $row['age']);
}
echo json_encode($abc_output);
}
现在进入Jquery部分:
如果上面的PHP代码去如果部分,那么我想显示一个警告框,或者如果它去其他部分,它需要插入一些值到表单。这是我尝试过的东西,但它没有工作。
$(document).ready(function(){
$("#button1").click(function(){
$.getJSON('script_1.php',function(data){
if (data=='true') {
alert ('hello')
}
else {
$.post('script_1.php',
{ id: $('input[name="id"]', '#myForm').val() },
function(json) {
$("input[name='title']").val(json.title);
$("input[name='age']").val(json.age);
},
"json");
}
});
});
:
$(document).ready(function(){
$("#button1").click(function(){
$.post(
'script.php',
{ id: $('input[name="id"]', '#myForm').val() },
function(json) {
var data = JSON.parse(json);
if (data.length === 0){
alert('no data');
}
else{
$("input[name='title']").val(json.title);
$("input[name='age']").val(json.age);
}},
"json"
);
});
});
PHP的一面
$name = mysql_real_escape_string($_POST['id']);
$sql ="SELECT * FROM parentid WHERE id = '$name'";
$result = mysql_query($sql);
$row = mysql_fetch_array($result);
if ($row) {
$row= array('title' => $row['title'],'age' => $row['age']);
echo json_encode($row);
} else {
echo json_encode(array());
}
在这样使用JSON之前需要解析它。现代浏览器将内置对JSON.parse(yourJSON)
的支持,但要考虑到那些不支持的浏览器,您应该使用Douglas Crockford的JavaScript JSON库。包括它将提供JSON.parse()
如果浏览器还没有它。
对于PHP中的if-else操作,通常的做法是回显一个空JSON对象或数组,这样您就不必在服务器端测试诸如无行之类的事情。您可以做如下简单的事情,稍后对数据库列名进行记帐:
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
if ($row) {
echo json_encode($row);
} else {
echo json_encode(array());
}
在JavaScript中,你可以这样做:
var data = JSON.parse(json);
if (data.length === 0) {
alert('no data');
} else {
$("input[name='title']").val(data.title);
$("input[name='age']").val(data.age);
}
jeroen是对的,你只需要使用一个AJAX调用。
似乎有几个问题:
- 您正在处理从
getJSON
返回的数据,如果它是普通的文本 - 你从javascript调用的php并不总是返回json
- 你正在做两个ajax请求;
getJSON
和post
,你只需要一个:第一次调用getJSON
没有任何数据将永远不会达到else
条件
顺便说一下,$name
从哪里来在你的php脚本?对于第二个ajax调用,如果它是整数,则需要是mysql_real_escape_string($_POST['id'])
或(int) $_POST['id']
之类的东西。
编辑:我认为这将是最容易摆脱.post
,只是使用第一个ajax调用。所以你需要修改:
$.getJSON('script_1.php',function(data){
转换成:
$.getJSON('script_1.php?id=' + $('input[name="id"]').val(), function(data) {
在PHP中,你需要这样写:
$name = mysql_real_escape_string($_GET['id']);