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();
}
}
}
}
在此代码中警报不起作用,如果没有选择id。所以有人帮助我。我已经尝试了很多但是js不起作用。 我在php中使用了js,这是js第一次在php内部工作
答案 0 :(得分:2)
如果没有看到发出HTTP请求的代码,很难说出问题是什么。
当没有选择id时,他们最有可能解释selectedId
被设置为为空字符串。条件!isset($_POST['selectedId'])
将不会为您提供所需的结果。请改用empty()
(并确保0
不是可接受的ID值。)
答案 1 :(得分:0)
似乎$_POST['selectedId']
是一个数组。那么您应该isset
使用$_POST['selectedId']
的元素,例如if (!isset($_POST['selectedId'][0]))
编辑1:试试这个
$array_id = array_filter($_POST['selectedId']);
然后使用if (!empty($array_id))
代替if (!isset($_POST['selectedId']))
答案 2 :(得分:0)
除非您将响应注入页面,否则永远不会评估Javascript。
如果你要......
document.write('<script src="/path/to/phpscript.php">')
然后将响应附加到页面并进行评估。
但是,如果你这样做......
$.ajax({
success: function(response) {
//Blah....
}
});
或类似的东西,从不评估响应,它作为字符串传递给您的成功函数。因此,您可以让PHP打印1
或0
以获得成功/失败 - 甚至更好地返回Json对象
<?php
...
if(!isset($_POST['selectedId']))
{
$Ret->Success = false;
$Ret->Reason = "No row is selected";
header("Content-Type: application/json");
print json_encode($Ret)
}
?>
然后使用$.getJson
Ajax调用将响应检索为Js对象(See this manual page)