2015-09-30 96 views
0

我有一種奇怪的問題,我似乎無法解決。AJAX和PHP,不會發送數據

我想要做的是在一個頁面上調用一個jQuery函數,將該函數的參數發送到同一服務器上的另一個.php文件,讓該php文件讀取該變量,然後插入它進入數據庫。

功能觸發器被放置在一個div,看起來像這樣:

<div class="add_button" onclick="addImg('<?php echo $value[id]; ?>');"> 

本身看起來像這樣的功能:

function addImg(id) { 
     $.ajax({ 
      url: "addImgs.php", 
      type: "POST", 
      data: {"id" : id} 
     }); 

     console.log("Function called with ID: " + id); 
} 

我使用控制檯嘗試和調試一點點這裏,和console.log() - 函數正在正確執行。如果「url」不存在,日誌也會給我一個錯誤500。

最後,addImgs.php我的PHP代碼如下所示:

<?php 

$id = $_REQUEST['id']; 


$servername = "localhost"; 
$username = "username"; 
$password = "password"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, "DB_name"); 

$query = "INSERT INTO imgs (id) VALUES ($id)"; 
$result = $conn->query($query); 

$conn->close(); 

?> 

這.PHP文件工作得很好,如果我添加

?id=123 

到底它的URL ,並在數據庫中的表中添加「123」值。

所以我的假設是問題是AJAX函數和PHP文件之間的連接。

請幫助:)

+0

檢查瀏覽器開發工具網絡實際要求的更多線索。發送什麼是預期的?什麼是地位?是什麼預期等路徑等這將有助於隔離服務器端從客戶端問題 – charlietfl

+0

你能告訴我如何做到這一點? 我沒有真正與之前的工作。 如果你想自己看看,該功能的頁面如下: http://projects.mn-web.dk/instafetcher/admin.php?p=dzehas – user2140209

+0

在鍵盤上打F12 ...開始探索...尋找網絡標籤。然後發出請求並在最後看到它 – charlietfl

回答

2

在你的問題,你說的變量名是id,但實際的網站上,你給了一個鏈接的名字是img_id

function addImg(id) { 
     $.ajax({ 
      url: "http://projects.mn-web.dk/instafetcher/addImgs.php", 
      type: "POST", 
      data: {"img_id" : id} 
     }); 

     console.log("Function called with ID: " + id); 
} 

您確定您的服務器端腳本也預計img_id?特別是,你肯定在實際的PHP腳本,你有這樣一行:

$id = $_REQUEST['img_id']; 

,而不是這樣的:

$id = $_REQUEST['id']; 

另外請注意,您的圖像ID不是整數:

img_id="828281229958329915_2834748" 

因此請確保imgs中的id的類型爲varchar或其他可存儲字符串的字符串,而不是intbigint

更新:正如Ivan在評論中指出的,由於img_id是一個字符串,而不是一個整數,因此INSERT查詢無效,因此需要將id括入引號中。一個簡單的方法做到這一點是:

$query = "INSERT INTO imgs (id) VALUES (\"".mysqli_real_escape_string($id)."\")"; 

但還有一個更合適的方法是使用準備好的語句:

http://php.net/manual/en/mysqli.prepare.php

+0

另外,如果ID是字符串,則必須在查詢中引用ID。 –

+0

@IvanDePazCenteno非常好的一點 – Ishamael