【问题标题】:I trying to handle response message and print on alert but its not working我试图处理响应消息并打印警报但它不起作用
【发布时间】:2020-04-05 11:01:18
【问题描述】:

在我的代码中,它会在发送消息后将 SMS 发送到选定的电话号码。我想在警报中显示成功消息,但它不起作用。

我的代码:

<div class="content-wrapper">
<section class="content">    
<div class="row">
<div class="col-lg-offset-1 col-md-12 col-sm-12 col-xs-12 col-lg-10">
 <div class="col-md-12">
  <div class="box box-primary">
      <div class="box box-default">
          <div class="box-body">
            <form id="getsms" method="post">
              <div class="row">
               <div class="col-md-5 col-sm-8 col-xs-8 col-lg-5">
                <div class="form-group">
                    <label>Numbers</label>
                     <input type="text" class="form-control" name="number" id="number"  dir="" autocomplete="off" readonly value="<?php 
                                //print_r($users);
                                for ($i=0;$i < count($users); $i++) {
                                  echo $users[$i];
                                    echo ",";
                                }
                                 ?>"   />
                   </div>
               </div>
                 <div class="col-md-12 col-sm-5 col-xs-5 col-lg-12">
                       <input type="hidden" name="txt-user-ids" id="txt-user-ids" readonly value="
                                   <?php
                                    for ($i=0;$i < count($user_ids); $i++) {
                                      echo $user_ids[$i];
                                      echo ",";
                                    }
                                    ?>" 
                                    />
                     <div class="form-group">
                        <textarea class="text_area" rows="10" cols="35" name="getmessage" id="myInput" required></textarea>
                      </div>
                    <div class="box-footer">
                    </div>
              </div>
           </div>
            <button type="button" onclick="getmessageonmobile();" class="btn btn-success col-lg-8 col-sm-6 col-xs-6 col-md-offset-2" name="sendopt">Send</button>
            </form>
          </div>

        </div>
      </div>
    </div>
  </div>
  </div>
</section>
</div>

脚本:

<script>
function getmessageonmobile(){
       $.ajax({
              url: "<?php echo base_url(); ?>admin_controllers/CategoryController/bulkSms",
              type: "post",
              data: $('#getsms').serialize(),
              dataType:'json',
        }).done(function( data ) {
            var res=jQuery.parseJSON(data);
                if(data.status=="success"){
                    alert('Message sucessfully sent ');
                    setTimeout(function(){location.reload();},5000);   
                }else if(res.errors[0].code=="192"){
                  alert(res.errors[0].message);
                }
                else{
                    alert("Try again");
                }    
        });
    }
</script>

控制器:

function bulkSms(){
        $getsms = $this->input->post('getmessage');
        $number = $this->input->post('number');
        $txtUserIds = $this->input->post('txt-user-ids');
        $myArray = explode(',', $txtUserIds);

       for ($i=0; $i<sizeof($myArray)-1; $i++) {
        $smsData= array(
                        'message'=>$getsms,
                        'sms_user_id'=>$myArray[$i],
             );
      $this->db->insert('historyofmessage',$smsData);

      $string_version=array();
      $string_version = implode(', ', (array)$number);
      $apiKey = urlencode('rTQHR7zsvVeKU79sojb6grGRAavnKW');
      $numbers = array($string_version);
      $sender = urlencode('TXTLCL');
      $unicode=1;
      $message = rawurlencode($getsms);

    $numbers = implode(',', $numbers);

    $data = array('apikey' => $apiKey, 'numbers' => $numbers, "sender" => $sender, "message" => $message,"unicode"=>$unicode);

    $ch = curl_init('https://api.textlocal.in/send/');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    echo json_encode($response);
 }
}

下图你可以在发送消息后在控制台中看到响应。

在图像中,我选择了两个不同的数字并发送一条消息,只是想处理响应并在消息发送或消息未发送时显示在警报中。

【问题讨论】:

  • 你能显示响应json吗?
  • 请不要发布代码图片,而是复制粘贴,以便我们轻松调试。
  • Response{"warnings":[{"code":3,"message":"Invalid number"}],"balance":80,"batch_id":960128131,"cost":1,"num_messages":1,"message":{"num_parts":1,"sender":"TXTLCL","content":"@U006A0068006B006A"},"receipt_url":"","custom":"","messages":[{"id":"11326265607","recipient":919999999999}],"status":"success"}

标签: javascript php html ajax codeigniter


【解决方案1】:

试试这个成功函数-

  success:function(data){
     var myJson = JSON.parse(data);
     if(myJson.status == "success"){
              alert('Message sucessfully sent ');
              setTimeout(function(){location.reload();},5000);   
       }else if(myJson.warnings[0].code =="192"){
              console.log(myJson.warnings[0].message);
       }else{
              alert("Try again");
       }
 }

【讨论】:

    【解决方案2】:

    您好,您可以尝试在成功函数中编写它并在浏览器的控制台窗口中打印错误响应-

     $.ajax({
         url: "<?php echo base_url(); ?>admin_controllers/CategoryController/bulkSms",
         type: "post",
         dataType:'json',
         data: $('#getsms').serialize(),
         success:function(data){
         if(data.status=="success"){
                  alert('Message sucessfully sent ');
                  setTimeout(function(){location.reload();},5000);   
           }else if(data.errors[0].code=="192"){
                  console.log(data.errors[0].message);
           }else{
                  alert("Try again");
           }    
       });
    

    【讨论】:

    • sendMessagePage:472 Uncaught TypeError: Cannot read property '0' of undefined
    • }else if(data.errors[0].code=="192"){ 在这一行
    • 你能在控制台打印“数据”吗?控制台.log(数据);并检查 json 响应是如何来的。
    • {"warnings":[{"code":3,"message":"Invalid number"}],"balance":76,"batch_id":960191231,"cost":1,"num_messages":1,"message":{"num_parts":1,"sender":"TXTLCL","content":"@U0063006800650063006B002000740068006500200063006F006E0073006F006C0065"},"receipt_url":"","custom":"","messages":[{"id":"11326427431","recipient":91845988815}],"status":"success"}
    【解决方案3】:

    你好,我能看到你发回的控制器的返回线吗

    【讨论】:

    • Response{"warnings":[{"code":3,"message":"Invalid number"}],"balance":80,"batch_id":960128131,"cost":1,"num_messages":1,"message":{"num_parts":1,"sender":"TXTLCL","content":"@U006A0068006B006A"},"receipt_url":"","custom":"","messages":[{"id":"11326265607","recipient":919999999999}],"status":"success"} 这是我从控制器得到的响应。
    • 您正在从控制器以 json 形式返回值
    猜你喜欢
    • 1970-01-01
    • 2019-11-13
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-01-20
    • 2023-03-20
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多