2015-03-13 77 views
0

我送下面 太阳2015年3月8日00:00:00 GMT + 0000 守则在我的控制器是PHP AJAX日期解析错误

public function actionSaveajaxevent() { 

    if (isset($_POST['Event']) && isset($_POST['datetime']) && isset($_POST['start']) && isset($_POST['end'])) { 
     $start = $_POST['start']; 
     $end = $_POST['end']; 
     $title = $_POST['Event']['title']; 

     if ($model->save()) { 
      $array = ['title' => $model->title, 'start' => $start, 'end' => $end]; 
      echo json_encode($array); 
     } 
    } else { 
     print_r($model->getErrors()); 
    } 
} 

描述含有格式的日期控制器的数据,我想以我的观点来看标题,开始和结束。鉴于jQuery函数是

<script> 
    $(document).ready(function() { 
     $('#w1').submit(function (event) { 
      event.preventDefault(); 
      var postData = $(this).serialize(); 
      $.ajax({ 
       type: 'post', 
       dataType: "json", 
       data: postData, 
       url: '<?php echo Yii::$app->urlManager->createAbsoluteUrl('site/saveajaxevent'); ?>', 
       success: function (data) { 
        var response = $.parseJSON(data); 
        console.log(response.title); 
        return false; 
       }, 
      }); 
      event.preventDefault(); 
      return false; 
     }); 
    }); 
</script> 

下面是错误在我的控制台

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data 

返回JSON.parse(数据+ “”);

在此先感谢

+1

解析之前的console.log数据,看看它是什么样子。 – bloodyKnuckles 2015-03-13 12:50:16

+0

只是一个旁注...你可以使用具有多个变量的'isset',一次检查它们,例如, 'isset($ _ POST ['Event'],$ _POST ['datetime'],...)''。这样说,该方法从哪里获得'$ model'?你的意思是'$ this-> model'?我敢打赌,由于PHP显示了一个错误,JSON被搞乱了。 – rjdown 2015-03-13 12:59:35

回答

0

尝试添加检查从服务器来在你的Ajax代码的响应,是正确与否:

  <script> 
       $(document).ready(function() { 
        $('#w1').submit(function (event) { 
         event.preventDefault(); 
         var postData = $(this).serialize(); 
         $.ajax({ 
          type: 'post', 
          dataType: "json", 
          data: postData, 
          url: '<?php echo Yii::$app->urlManager->createAbsoluteUrl('site/saveajaxevent'); ?>', 
          success: function (data) { 

           alert(data); //before parse the JSON first alert the response 

           //var response = $.parseJSON(data); 
           //console.log(response.title); 
           return false; 
          }, 
         }); 
         event.preventDefault(); 
         return false; 
        }); 
       }); 
      </script>