2015-03-13 74 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>