2016-10-20 89 views
0

我正在使用angular js和php。我有一個數組在我的控制器從js文件發佈。我已經將我的陣列轉換爲JSON並嘗試傳遞下面的數據以PHP解壓縮數據

var update = { 
       method: 'POST', 
       url: apiPoint.url + 'up.php', 
       headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      }, 
       params :{ 
         alldatas: JSON.stringify($scope.alldata) , 

         section : 'A', 
       } 

通過這樣做,我得到了414狀態錯誤代碼。網址太長。 所以我已經試過JSONC來打包我的數據.. 我使用jsonc.min.js並更新了我的代碼,如下所示。

var update = { 
       method: 'POST', 
       url: apiPoint.url + 'up.php', 
       headers: { 
       'Content-Type': 'application/x-www-form-urlencoded' 
      }, 
       params :{ 
         alldatas: JSONC.pack($scope.alldata) , 

         section :'A', 
       } 

現在我的數據通過url傳遞,並在我的控制器中獲取數據。但我無法解開數據。請幫我解開數據。

+2

爲什麼您通過網址傳遞數據? –

+0

我正在使用主題Cliptwo。我們正在編碼這樣。任何其他想法? – athi

回答

0

我想你使用的是標準的$http組件,上面提到的JavaScript對象代表它的configuration object

您應該通過POST傳遞JSON數據,即請求正文,因爲請求URI length is limitedparams選項被序列化爲GET。 所以,你需要你的數據(alldatas)進入data選項:

var req = { 
    method: 'POST', 
    url: apiPoint.url + 'up.php', 
    data: { alldatas: $scope.alldata }, 
    // you might even stringify it 
    //data: JSON.stringify({ alldatas: $scope.alldata }), 
    headers: { 'Content-Type': 'application/json;charset=utf-8' }, 
    params: { section : 'A' } 
}; 

$http(req).then(function (response) { 
    console.log(response.data); 
}); 

對於你應該建立一個查詢字符串application/x-www-form-urlencoded內容類型:

var req = { 
    method: 'POST', 
    url: apiPoint.url + 'up.php', 
    data: 'alldatas=' + encodeURIComponent(JSON.stringify($scope.alldata)), 
    headers: { 'Content-Type': 'application/x-www-form-urlencoded' } 
    params: { section : 'A' } 
}; 

$_POST超全局爲application/x-www-form-urlencoded並不僅填補內容類型爲multipart/form-data。其他內容類型可通過php://input流獲得:

if (!empty($_POST)) { 
    $obj = $_POST; 
} else { 
    $json = file_get_contents('php://input'); 
    $obj = json_decode($json); 
} 
if ($obj) { 
    header('Content-Type: application/json'); 
    echo json_encode($obj); 
} 
exit(); 
+0

沒有。在up.php是隻獲得部分。 alldatas is undefined – athi

+0

@athi,你是否試圖檢查它是否存在:'var_dump($ _ POST);'?你有沒有檢查HTTP請求頭 - 它實際上是否發送POST數據到服務器?也許某種緩存有效。嘗試發送測試字符串而不是'JSON.stringify(...)'。也許參數('$ scope.alldata')具有無效數據(或者只是一個未定義的字符串)。主要想法是將打算髮送到服務器的數據移動到「數據」部分。 –

+0

$ _POST爲null .. – athi