2016-05-23 35 views
1

你好傢伙我有我的前端在離子和後端在PHP中。現在我試圖發送一些數據回到我的角度應用程序,但我面臨一些錯誤。我試圖找到解決方案,但我無法找到解決方案。請幫助我解決這個問題,謝謝。那我得到的錯誤是:json_encde扔我錯誤

SyntaxError: Unexpected token { in JSON at position 331 
    at Object.parse (native) 
    at fromJson (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:14655:14) 
    at defaultHttpResponseTransform (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:23675:16) 
    at http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:23766:12 
    at forEach (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:13691:20) 
    at transformData (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:23765:3) 
    at transformResponse (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:24554:21) 
    at processQueue (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:29127:28) 
    at http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:29143:27 
    at Scope.$eval (http://192.168.10.5:8100/lib/ionic/js/ionic.bundle.js:30395:28) 

這是我們所關注的部分是這樣的:

if($request->category == "key"){ 
      error_log("in key"); 
      $key_action = $this->Battleplan_Util->getKeyBattleplan($param["for"]); 
      $key_action_count = count($key_action); 
      if ($key_action_count == 0){ 
      error_log("adding"); 
      $this->addActionInBattleplan($param); 
      }else{ 
      error_log("error found in key"); 
      $data["status"] = "false"; 
      $data["type"] = "key"; 
      $data["data"] = $key_action; 
      error_log("Data is : ". print_r($data , true)); 
      // echo json_encode(array("status"=>"false","type"=>"key","data"=>$key_action[0])); 
      echo json_encode(array("data" => $data)); 
      } 

我的PHP控制器從那裏我將數據發送回我的角度視圖功能這樣的:

public function addBattleplan(){ 

    // error_log("Hwllo world"); 
    // die; 
    // $param = $this->input->post(); 


    $postdata = file_get_contents("php://input"); 
     $request = json_decode($postdata); 
     $token = $request->token; 
     $referrer = $request->referrer; 
     // $type = $request->type; 
     $param["plan"] = $request->plan; 
     $param["date"] = $request->date; 
     $param["category"] = $request->category; 
     $token = $this->common_util->Decrypt('XXXXXXX',$token); 


     $user = $this->User_Util->get_token($token); 
     if (!$user) { 
     echo false; 
     } 

     $user_id = $user[0]['user_id']; 
     if ($request->target) { 
      $param['target'] = date('M d, Y' , strtotime($request->target)); 
     } else { 
      $param['target'] = '--'; 
     } 
     // $param['date'] = $this->getToday(); 
     $param['date'] = date('M d, Y'); 
     $param['starred'] = FALSE; 
     $param['archived'] = FALSE; 
     $param["for"] = new MongoId($user_id); 
     $param["type"] = "daily"; 

     error_log("The category is: ". $this->category); 
     if ($request->category == "additional"){ 
     error_log("in additional"); 
     $this->addActionInBattleplan($param); 
     } 
     else{ 

     if($request->category == "key"){ 
      error_log("in key"); 
      $key_action = $this->Battleplan_Util->getKeyBattleplan($param["for"]); 
      $key_action_count = count($key_action); 
      if ($key_action_count == 0){ 
      error_log("adding"); 
      $this->addActionInBattleplan($param); 
      }else{ 
      error_log("error found in key"); 
      $data["status"] = "false"; 
      $data["type"] = "key"; 
      $data["data"] = $key_action; 
      error_log("Data is : ". print_r($data , true)); 
      // echo json_encode(array("status"=>"false","type"=>"key","data"=>$key_action[0])); 
      echo json_encode(array("data" => $data)); 
      } 
     }else{ 
      error_log("in important"); 
      $imp_action = $this->Battleplan_Util->getImportantBattleplan($param["for"]); 
      $imp_actions_count = count($imp_action); 
      if($imp_actions_count < 5){ 
      $this->addActionInBattleplan($param); 
      }else{ 
      echo json_encode(array("status"=>"false" , "type"=> "important" , "data"=>$imp_action)); 
      } 
     } 
     } 

     echo json_encode(array("status" => "true")); 
     return; 

     // $id = $this->Battleplan_Util->addBattleplan($param); 
     // if($id) 
     // { 

     // // $c_id = $this->calendar_util->insertCalendar($param['date'] , $param['target'], $param['plan'], '', 'actions', $id); 
     // // $this->battleplan_util->updateBattleplaCalendarId($id,$c_id); 
     // } 
     // echo 'true'; 
     // return; 
    // } 

    } 

,這裏是從那裏我試圖發送數據的離子碼

var request = $http({ 
      method: "post", 
      url: link, 
      data: { 
      token:token, 
      plan: action, 
      target: date, 
      category: type, 
      }, 
     }); 
     request.success(function (data) { 
      debugger; 
      $scope.tittle = data[0]['plan']; 
      $scope.created =data[0]['date']; 
      $scope.targetD = data[0]['target']; 

      var alertPopup = $ionicPopup.alert({ 
       title: 'Data Sent And Received Successfully', 
       template: data 
      }); 
      alertPopup.then(function(res) { 
       console.log('Data Sent And Received Successfully'); 
       $scope.checkStatus=false; 
      }); 
     }); 

請告訴我它是什麼,我做錯了

** JSON **

嗯,我想這個數據編碼成JSON。那就是:

[23-May-2016 11:53:38 Asia/Karachi] Data is : Array 
(
    [status] => false 
    [type] => key 
    [data] => Array 
     (
      [0] => Array 
       (
        [_id] => MongoId Object 
         (
          [$id] => XXXXXXXXXXXXXXXXXX 
         ) 

        [plan] => Action 
        [target] => May 20, 2016 
        [status] => active 
        [type] => daily 
        [for] => MongoId Object 
         (
          [$id] => XXXXXXXXXXXXXX 
         ) 

        [category] => key 
        [date] => May 20, 2016 
        [starred] => 
        [archived] => 
        [visibility] => Array 
         (
          [0] => MongoId Object 
           (
            [$id] => XXXXXXXXXXXXXXXXX 
           ) 

         ) 

       ) 

     ) 

) 

標有星號和歸檔中都有假的,但這並不在錯誤日誌中顯示出來

+3

您的json格式無效。發佈你的json。 – choz

+0

是從網絡選項卡中獲取json並將其發佈在此處 –

+0

或在http://jsonlint.com上檢查它 –

回答

3

修改類似下面控制器代碼。

public function addBattleplan(){ 

     $postdata = file_get_contents("php://input"); 
      $request = json_decode($postdata); 
      $token = $request->token; 
      $referrer = $request->referrer; 
      // $type = $request->type; 
      $param["plan"] = $request->plan; 
      $param["date"] = $request->date; 
      $param["category"] = $request->category; 
      $token = $this->common_util->Decrypt('XXXXXXX',$token); 


      $user = $this->User_Util->get_token($token); 
      if (!$user) { 
      echo false; 
      return; 
      } 

      $user_id = $user[0]['user_id']; 
      if ($request->target) { 
       $param['target'] = date('M d, Y' , strtotime($request->target)); 
      } else { 
       $param['target'] = '--'; 
      } 
      // $param['date'] = $this->getToday(); 
      $param['date'] = date('M d, Y'); 
      $param['starred'] = FALSE; 
      $param['archived'] = FALSE; 
      $param["for"] = new MongoId($user_id); 
      $param["type"] = "daily"; 

      error_log("The category is: ". $this->category); 
      if ($request->category == "additional"){ 
      error_log("in additional"); 
      $this->addActionInBattleplan($param); 
      } 
      else{ 

      if($request->category == "key"){ 
       error_log("in key"); 
       $key_action = $this->Battleplan_Util->getKeyBattleplan($param["for"]); 
       $key_action_count = count($key_action); 
       if ($key_action_count == 0){ 
       error_log("adding"); 
       $this->addActionInBattleplan($param); 
       }else{ 
       error_log("error found in key"); 
       $data["status"] = "false"; 
       $data["type"] = "key"; 
       $data["data"] = $key_action; 
       error_log("Data is : ". print_r($data , true)); 
       // echo json_encode(array("status"=>"false","type"=>"key","data"=>$key_action[0])); 
       $rawdata=json_encode(array("data" => $data)); 
       } 
      }else{ 
       error_log("in important"); 
       $imp_action = $this->Battleplan_Util->getImportantBattleplan($param["for"]); 
       $imp_actions_count = count($imp_action); 
       if($imp_actions_count < 5){ 
       $this->addActionInBattleplan($param); 
       }else{ 
       $rawdata= json_encode(array("status"=>"false" , "type"=> "important" , "data"=>$imp_action)); 
       } 
      } 
      } 

      echo $rawdata; 
      return; 

     } 

希望這可以幫助你。

+0

做了一個小的修改,我先前發佈的代碼。請檢查一下。根據我的理解,我做出了改變。跳過如果我錯了 –

+0

Naa它改變了我的邏輯的一點點,但我已經理解了上述評論@u_mulder中提到的問題。還是謝謝 –