我的视图文件中有这个jquery代码
$('#ticket-ticket_impact_id').change(function() {
var priority = $('#ticket-ticket_priority_id :selected').val();
var impact = $('#ticket-ticket_impact_id :selected').val();
if ($('#ticket-ticket_priority_id').val() == '' || $('#ticket-ticket_impact_id').val() == '') {
} else {
$.post('index.php?r=support/ticket/ajax-ticket-sla&ticket_priority_id=' + priority + '&ticket_impact_id=' + impact);
}
})
$('#ticket-ticket_priority_id').change(function() {
var priority = $('#ticket-ticket_priority_id :selected').val();
var impact = $('#ticket-ticket_impact_id :selected').val();
if ($('#ticket-ticket_priority_id').val() == '' || $('#ticket-ticket_impact_id').val() == '') {
} else {
$.post('index.php?r=support/ticket/ajax-ticket-sla&ticket_priority_id=' + priority + '&ticket_impact_id=' + impact);
}
})
从此处将优先级和影响id的值发送到controller / ajax函数
public function actionAjaxTicketSla(){
$ticket_priority_id=$_REQUEST['ticket_priority_id'];
//var_dump($ticket_priority_id);die();
$ticket_impact_id=$_REQUEST['ticket_impact_id'];
if(Sla::find()->where(['ticket_priority_id'=>$ticket_priority_id,'ticket_impact_id'=>$ticket_impact_id])->exists())
{
} else{
echo '<script type="text/javascript">alert("No sla defined!");</script>';
}
}
我甚至无法回应某些东西作为回应,这里不知道这里有什么不对,任何帮助都会受到赞赏。
答案 0 :(得分:1)
您正在混合POST,GET和REQUEST
在ajax中你使用POST但不发送nothins作为POST参数 相反,你将URL中的param作为GET参数传递 并且在行动中你寻找REQUEST而不是GET(或发布)
您可以直接访问$ _REQUEST,而不是使用yii2方法进行此
你应该重新考虑你的代码..
无论如何只是作为第一步 期待你的ajax调用你可以使用你传递的参数作为获取参数
public function actionAjaxTicketSla(){
$request = Yii::$app->request;
$get = $request->get();
$ticket_priority_id=$get['ticket_priority_id'];
//var_dump($ticket_priority_id);die();
$ticket_impact_id=$get['ticket_impact_id'];
if(Sla::find()->where(['ticket_priority_id'=>$ticket_priority_id,'ticket_impact_id'=>$ticket_impact_id])->exists())
{
echo 'OK';
} else{
echo 'No sla defined';
}
}
并在客户帖子中
$.post('index.php?r=support/ticket/ajax-ticket-sla&ticket_priority_id=' +
priority + '&ticket_impact_id=' + impact,
function(data){
if (data !='OK') {
alert(data);
}
});
答案 1 :(得分:0)
在If条件下尝试Echo并从网络控制台共享“页面”的响应。
答案 2 :(得分:0)
从PHP服务器向js发送javascript代码不是一个好习惯。你正在做的事情本质上是调用服务器并向它发送数据,而不是对你收到的resposne做任何事情。
尝试创建一个正确的回调函数,如本例所示,
添加一个回调函数(AJAX是异步的,所以在有任何数据要返回之前你的返回被命中):
function returnData(param) {
console.log(param);
}
现在将该回调函数作为参数添加到AJAX函数中,然后运行它:
function getCartProduct(id, callback){
$.post('sever.php',
function(data){
callback(data);
});
}
getCartProduct(id, returnData);
此外,服务器的响应在javascript中被视为字符串。要将其作为javascript语法进行评估,请将字符串传递给eval()方法。
eval('alert("this works");');