如何根据ajax的结果执行不同的js动作?

时间:2011-02-15 06:26:33

标签: php javascript jquery ajax

我正在尝试做一些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,怎么做呢?

1 个答案:

答案 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!