Java脚本在php中不起作用 公共函数actionAjaxUpdate() { $action=$_GET['act']; 如果(!isset($\u POST['selectedId'])) { 回显“警报”(“未选择任何行”); } 其他的 { $selectedAll=$\u POST['selectedId']; 如果(计数($selectedAll)>0) { foreach($selectedAll作为$selectedId) { $model=$this->loadCompositeModel($selectedId); 开关($动作){ 案例“删除”: $model['account']->delete(); 打破 “活动”案例: $model['account']->active='1'; 打破 案例“未激活”: $model['account']->active='0'; 打破 违约: 打破 } $model['account']->save(); } } } } 列表项

Java脚本在php中不起作用 公共函数actionAjaxUpdate() { $action=$_GET['act']; 如果(!isset($\u POST['selectedId'])) { 回显“警报”(“未选择任何行”); } 其他的 { $selectedAll=$\u POST['selectedId']; 如果(计数($selectedAll)>0) { foreach($selectedAll作为$selectedId) { $model=$this->loadCompositeModel($selectedId); 开关($动作){ 案例“删除”: $model['account']->delete(); 打破 “活动”案例: $model['account']->active='1'; 打破 案例“未激活”: $model['account']->active='0'; 打破 违约: 打破 } $model['account']->save(); } } } } 列表项,php,javascript,Php,Javascript,在此代码中,如果未选择id,则警报不起作用。因此,有人可以帮助我。我尝试了很多,但是js不起作用。 我在php中使用过js,这是第一次当js在php中不工作时,没有看到发出HTTP请求的代码,很难说问题出在哪里 他们最可能的解释是,selectedId在未选择id时设置为空字符串。条件!isset($\u POST['selectedId'])将不会提供您想要的结果。改为使用empty()(并确保0不是可接受的id值)。似乎$\u POST['selectedId']是一个数组。然后您应该对$\

在此代码中,如果未选择id,则警报不起作用。因此,有人可以帮助我。我尝试了很多,但是js不起作用。
我在php中使用过js,这是第一次当js在php中不工作时,没有看到发出HTTP请求的代码,很难说问题出在哪里


他们最可能的解释是,
selectedId
在未选择id时设置为空字符串。条件
!isset($\u POST['selectedId'])
将不会提供您想要的结果。改为使用
empty()
(并确保
0
不是可接受的id值)。

似乎
$\u POST['selectedId']
是一个数组。然后您应该对
$\u POST['selectedId']
的元素使用
isset
,例如
if(!isset($\u POST['selectedId'][0])

编辑1:试试这个

public function actionAjaxUpdate()
    {   
        $action = $_GET['act'];


        if(!isset($_POST['selectedId']))
        {
            echo '<script> alert("No row is selected"); </script>';
        }

        else
        {
        $selectedAll = $_POST['selectedId'];
        if(count($selectedAll)>0)
        {
            foreach($selectedAll as $selectedId)
            {
                $model=$this->loadCompositeModel($selectedId);
                switch ($action) {
                    case 'Delete':
                        $model['account']->delete();
                        break;
                    case 'Active':
                        $model['account']->active = '1';
                        break;
                    case 'Inactive':
                        $model['account']->active = '0';                     
                        break;
                    default:
                        break;
                }
                $model['account']->save();
            }
        }
        }

    }

然后使用
if(!empty($array_id))
而不是
if(!isset($\u POST['selectedId'])

除非您将响应注入回页面,否则Javascript将永远不会被评估

如果你要做

$array_id = array_filter($_POST['selectedId']);
或者类似的,响应永远不会被计算,而是作为字符串传递给success函数。因此,您可以让PHP打印
1
0
以获得成功/失败,或者更好地返回Json对象

$.ajax({
    success: function(response) {
        //Blah....  
    }
});


然后使用
$.getJson
Ajax调用以Js对象的形式检索响应()

检查您的条件是否正确。请发布您的表单,这样我们就可以查看
$\u post['selectedId']
ishey条件是否正确。我已经在firebug@Edwin'columns'=>数组(数组('id'=>'selectedId','class'=>'CCheckBoxColumn',//'value'=>'data->'user\u status',),'uid','username','password','bid',数组('name'=>'active',/'header'=>'active','filter'=>数组('1'=>'Yes','0'=>'No'),'value'=>'($data->active==“1”)?('Yes”):('No')),数组('class'=>'CButtonColumn',),),);?>是$\u POST['selectedId']是一个数组。但是我应该知道$u POST['selectedId']的元素吗?那么你的意思是,你不知道元素吗?不,我的意思是当我选择一行时,selectedId返回该行的id。那么如何使用该ID
selectedid
来自哪里?输入代码或向我们显示所选代码的元素ID?可能类似于
$\u POST['selectedId']['id']
$.ajax({
    success: function(response) {
        //Blah....  
    }
});
<?php

    ...
    if(!isset($_POST['selectedId']))
    {
        $Ret->Success = false;
        $Ret->Reason = "No row is selected";
        header("Content-Type: application/json");
        print json_encode($Ret)
    }     
?>