我正在尝试做一些ajax的东西,基本上,根据返回的文件(php文件)中的结果,我们在javascript中有不同的操作。
例如,假设我正在执行以下操作:
$.ajax({
type: 'POST',
url: '/something.php',
data: 'something=something',
cache: false,
success: function(data) {
$('#something').html(data);
}
});
如果成功的话,我的div会返回一些东西。但是在'something.php'中,可能会有一个if语句:
if($_POST['something'] == 'not_something') {
// execute something here
} else {
// do something else
}
问题是,我正在执行的,取决于结果将是javascript,而不是PHP代码。例如,目前我可以通过这样做来实现它:
if($_POST['something'] == 'not_something') {
echo '<script type="text/javascript">thissucks();</script>';
} else {
echo '<script type="text/javascript">atleastitworks();</script>';
}
但这对我来说似乎并不合适。有没有更好的方式来完成这种事情?
另一种情况可能是某种类型的ajax搜索功能,根据是否存在结果而做出不同的事情。这种事。如果不像我上面那样做一些非常常规的内联javascript,怎么做呢?
答案 0 :(得分:3)
您可以使用PHP的json_encode
格式化一个数组,该数组将指令返回给jQuery $.ajax()
函数。比如这个:
<?php
if($_POST['something'] == 'not_something') {
echo json_encode(array('status'=>'thissucks'));
}
成功对象文字的$.ajax()
匿名函数中的哪一点如下所示:
$.ajax({
type: 'POST',
url: '/something.php',
date: 'something=something',
cache: false,
dataType: 'json', //this is important!
success: function(data) {
if(data['status']=='thissucks'){
//do something here
}
}
});
祝你好运!
<强>更新强> 忘记了所有重要的数据类型属性,使它成为eval()的json!