2016-09-29 176 views
0
<script> 
$("#submit").click(function() { 
    var newhour= []; 
    for (var i = 0; i < arrayNumbers.length; i++) { 
     newhour.push(arrayNumbers[i].toString().split(',')); 
     console.log("each: " + newhour[i]); // output: each: 07:00,08:30 
                 each: 18:00,19:00             
    } 
    console.log("all: " + newhour); //output: all: 07:00,08:30,18:00,19:00 

    var jsonString = JSON.stringify(newhour); 
    $.ajax({ 
     type: "POST", 
     url: "exp.php", 
     data:{data: jsonString}, 
     cache: false, 
     success: function(){ 
        alert("OK"); 
     } 
    }); 
}); 
<script> 

我想將newhour數組值傳遞給php並使用它們插入到表中。 所以PHP文件,exp.php:將數組值從javascript傳遞到php

$data = explode(",", $_POST['data']); 
foreach($data as $d){ 
    echo $d; 
    $sql = "insert into exp_table (hour) values ('$d')"; 
    mysql_query($sql); 
} 

但是我不能接受的價值觀。代碼有什麼問題? 你能幫我嗎? 在此先感謝。

根據我在PHP方面嘗試這個答案,但它返回NULL。

$data = json_decode($_POST['data'],true); 
//$data = explode(",", $_POST['data']); 
echo "data: " .$data; 
var_dump($data); // no output 
foreach($data as $d){ 
    echo $d; // no output 
} 
+0

到'JSON'轉換在PHP陣列中使用'json_decode'不會爆炸。 – jcubic

+0

$ _POST變量是否爲空?你在你的exp.php文件中遇到了什麼?你有沒有javascript錯誤? – Thibault

+0

當我試圖用echo $ data獲取數據時,它給了我它是數組。它不會給出值@Thibault – Ozzlem

回答

0

在ajax數據文章中傳遞沒有JSON.stringify的數組。並使用$_POST['data']獲取php文件中的數據。

我剛纔試過下面的代碼,它工作得很好。

<?php 
if(isset($_POST['data'])){ 
    print_r($_POST);exit; 
} 
?> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script> 
$(document).ready(function() { 
    var newhour= []; 
    arrayNumbers = [['07:00','08:30'],['08:30','18:00','19:00']]; 
    for (var i = 0; i < arrayNumbers.length; i++) { 
     newhour.push(arrayNumbers[i].toString().split(',')); 
     console.log("each: " + newhour[i]); 
     // output: each: 07:00,08:30 each: 18:00,19:00             
    } 
    console.log("all: " + newhour); //output: all: 07:00,08:30,18:00,19:00 

    $.ajax({ 
     type: "POST", 
     url: "abc.php", 
     data:{data: newhour}, 
     cache: false, 
     success: function(data){ 
      console.log(data); 
     } 
    }); 
}); 
</script> 
+0

哦,是的,盲目地插入'$ _REQUEST'數據到數據庫似乎是這樣一個好主意...... – Andrew

+0

每次你使用[mysql_'](http://stackoverflow.com/questions/12859942/why-shouldnt -i-use-mysql-functions-in-php) 新代碼中的數據庫擴展 ** [小貓在世界的某個地方被勒死](http://2.bp.blogspot.com/-zCT6jizimfI/UjJ5UTb_BeI/ AAAAAAAACgg/AS6XCd6aNdg/s1600/luna_getting_strangled.jpg)**它已被棄用並且已經使用了多年,並且在PHP7中永遠消失了。 如果您只是學習PHP,請花些精力學習'PDO'或'mysqli'數據庫擴展。 [從這裏開始](http://php.net/manual/en/book.pdo.php) – RiggsFolly

+0

@RiggsFolly老兄,真的,我得問問,你是在解析新的問題並自動發佈那個答案嗎?不抱怨或任何事情,越早'mysql_ *'死得越好。 – Andrew

0

您不必在javascript中對數組進行字符串化。

.ajax看起來很重要。

data: {newhours: newhour}, 

那麼你將得到的PHP代碼,這將是你在JavaScript有陣$_POST['newhours']

0


在Ajax中沒有「類型」參數,使用「方法」。 除了這一切應該工作,你可能需要在你的php文件中使用json_decode($_POST['data'])解碼json。
希望它有幫助!

  • 尼克
+0

'json_decode($ var,true)'用於數組輸出。對於'stdClass'沒有'true'。指向OP。 – Andrew

+0

@Andrew Yea你是對的,但最終它會得到相同的結果。 – Nicolas

+0

當然,這不是批評,我只是想到OP可能會查看您的答案,有些人更喜歡使用數組。很高興有這個選擇。沒有打算傷害。 – Andrew