打印警报框以响应yii2中的ajax调用

时间:2017-07-20 11:08:21

标签: javascript php jquery ajax yii2

我的视图文件中有这个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>';
    }
}

我甚至无法回应某些东西作为回应,这里不知道这里有什么不对,任何帮助都会受到赞赏。

响应 enter image description here

3 个答案:

答案 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");');