2017-02-19 73 views
-2

我似乎無法理解如何將數據從我的客戶端HTML發送到我的服務器端PHP(這已經意味着它們不在同一個文件夾中,並且不在服務器中運行)並且只能獲取未知變量和致命錯誤的通知:無法訪問空屬性。如何使用JSON將HTML數據發送到PHP?

我嘗試了W3Schools中的方法,但仍然沒有運氣。只是爲了確保我試圖複製粘貼它。還是一樣。

所以我的問題是:我如何發送這個簡單的客戶端HTML/JavaScript的數據: -

<script> 
function sender(){ 
obj = "tblname"; 
// how to send that data to the php server-side. 
} 
</script> 

爲了這個PHP: -

<?php 
header("Content-Type: application/json; charset=UTF-8"); 
$obj = json_decode($_GET["x"], false); 

$conn = new mysqli("localhost", "root", "", "mydb"); 
$result = $conn->query("SELECT * FROM ".$objData); 
$outp = array(); 
$outp = $result->fetch_all(MYSQLI_ASSOC); 

echo json_encode($outp); 
?> 

使用JSON?

如果任何人能夠詳細說明並給我看一個樣本,那就太好了。

同樣,我是使用JSON的noob/newb,沒有長期的背景(我剛開始就像一個星期前一樣,而且已經有很多問題了),並且當涉及到這種類型的客戶端時,我完全無能爲力到服務器通信。

我只需要簡單的發送者代碼(來自JavaScript)和接收代碼(來自Php)一兩行就可以了;並簡要介紹他們如何工作。

我使用的是Windows 7,Wamp3.0.6和Chrome。 PS:我從W3Schools那裏得到了這個。是的,它沒有工作。請不要模糊。謝謝!

+0

等待回了一點。變量'obj =「tblname」;'從哪裏來?它來自HTML表單嗎?你介意頁面是否刷新?或者你想通過AJAX發送數據? JSON並沒有真正進入這個,因爲你只是發送一個字符串... – Juned

+0

沒有不好,當頁面刷新因爲可能導致短期數據丟失。只要解釋了我就可以使用AJAX。 – Arkonsol

+0

或發佈你的JS嘗試,有人會幫助你。 – Juned

回答

0

-_- 似乎每個人都嘗試過和當簡單答案應該是這個代碼時,這個問題變得複雜而且過度思考。

function caller(){ 
myData = "myTbl"; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", "bring.php?q="+myData,true); //sends myData to the php. You can change the GET to POST if ya want to be extra safe but either way, the php won't care anyways. 
xmlhttp.send(); 
} 

上面的代碼是從所述客戶端服務器和myData的數據發送到該服務器端PHP。

<?php 
$q = $_REQUEST['q']; //the receiver of the data. You can use explode() to separate them into pieces and turn it into a jigsaw puzzle if ya want. 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "Mydb"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} // how to connect is not important in my question but it is important for you to be able to connect to the database. 

// now for the important stuff 

$sql = "SELECT * FROM ".$q." "; // I had to extend it with a space because sometimes it's misunderstood. 
$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn)); 
$outp = array(); 

while($row=mysqli_fetch_assoc($result)) 
{ 
    $outp[] = $row; 
} 
    echo json_encode($outp); //sends the data gathered from the database table back to the client as a JSON file, and you are done. 
?> 

我耗費了6個小時的時間學習了很多上網衝浪和試驗和錯誤。

而且就像我說的;我是JSON的新手,所以我很瞭解我不懂AJAX。就像AT ALL。

對不起,如果亞認爲我聽起來像一個白癡,但是讓我們面對它,幾乎我們所有的人在一個點是笨蛋而努力學習編程。所以,我很驚訝爲什麼有些人在這裏顯得粗魯無禮。謝謝。不知何故,我並不感到驚訝,他們也喜歡這裏。使我的互聯網社交生活變得更無聊。

因此,下一次

,幫我一個忙,而不是被完全粗魯,只是回答這個問題,如果你有一個。

+0

就這麼你知道,你在這裏有一個基本的AJAX請求。 AJAX有一些有趣的跨瀏覽器問題,所以建議使用庫來解決這個問題。 [Jquery](http://learn.jquery.com/ajax/)是一個受歡迎的選項,但它不是唯一的選項。另請參閱https://www.sitepoint.com/introduction-jquery-shorthand-ajax-methods/和https://www.sitepoint.com/use-jquerys-ajax-function/ –

+0

其實,我試圖研究它,但我不知何故,總會有一些致命的錯誤。嘗試了你發給我的鏈接(實際上我甚至在發佈這個問題之前)。就像我在我的問題中所說的那樣,我總是會遇到兩個錯誤。我必須找出爲什麼它不適用於這些方法。這就是我問的原因。這只是我的代碼的一部分,因爲我不得不使用更多的代碼來完成這個過程。我認爲我的WAMP服務器出了問題。地獄它甚至不會運行,如果我沒有互聯網連接。 0_0是的,我嘗試了Uni&Rei方法。還是一樣。 – Arkonsol

0

可以使AJAX調用形式的客戶端與服務器文件,可以用get方法

// Using the core $.ajax() method 
$.ajax({ 

    // The URL for the request 
    url: "path of your php file", 

    // The data to send (will be converted to a query string) 
    data: { 
     id: 123 
    }, 

    // Whether this is a POST or GET request 
    type: "GET", 

    // The type of data we expect back 
    dataType : "json", 
}) 
    // Code to run if the request succeeds (is done); 
    // The response is passed to the function 
    .done(function(json) { 
    }) 
    // Code to run if the request fails; the raw request and 
    // status codes are passed to the function 
    .fail(function(xhr, status, errorThrown) { 
    alert("Sorry, there was a problem!"); 

    }) 
    // Code to run regardless of success or failure; 
    .always(function(xhr, status) { 
    alert("The request is complete!"); 
    }) 
+2

注意到這需要作爲jQuery的依賴......沒有提到 – charlietfl

+0

其實我已經基本掌握使用JSON我的問題是隻發送到PHP位從PHP位接收。 – Arkonsol

-2

,因爲它是無法通過HTTP傳輸的目標發送數據。你需要把它改造成一個字符串,你可以把你的HTTP-POST請求的身體:

try { 
    var jsonString = JSON.stringify(anyJsonObject); 
    //send it to the server 
} catch(ex) { 
    //handle error if anyJsonObject wasn't a valid JSON object. Remember: Not every JS object is a JSON object too. 
} 

相反的方式是:

try { 
    var jsonObject = JSON.parse(anyJsonString); 
} catch(ex) { 
    //handle error if anyJsonString was malformed 
} 
+0

我已經知道該怎麼做,這不是一個真正的回答我的問題 – Arkonsol

+0

哦,我回答我的問題。這將有助於清除你的想法*「你不能通過HTTP傳輸對象,因爲它是*部分。你可以使用'$ _REQUEST'和一些'xmlhttp'幫助。 – Arkonsol

相關問題