2017-06-07 47 views
0

我已經認識到問題在於我正在嘗試將字符串數組傳遞給JavaScript。PHP PDO - 將動態字符串數組傳遞給JavaScript

我不知道該怎麼做。

FORM

<input type="hidden" name="id"> 
<input type="hidden" name="adProd"> 

DB連接下面

$stmt = $conn->prepare("SELECT product_name, product_quantity, product_id FROM product "); 
$stmt->execute(); 

// set the resulting array to associative 
$result = $stmt->fetchAll(PDO::FETCH_OBJ); 

foreach ($result as $v) { 
    echo "<td style='width:150px;border:1px solid black;'>"; 
    echo "</td>"; 
    echo '<tr>'; 
    echo '<td>' .$v->product_name. "</td>"; 
    echo '<td>' .$v->product_quantity. "</td>"; 
    echo '<td>' .$v->product_id. "</td>"; 

product_id工作,正是因爲它應該。

echo '<td> <button type="submit" onclick="askForSell('.$v->product_id.')"> Sell </button> </td>'; 

,另一方面product_name不起作用。

echo '<td> <button type="submit" onclick="askForBuy('.$v->product_name.')"> Buy </button> </td>'; 

的JavaScript

form=document.getElementById("sellAndBuy"); 

正常工作:

function askForSell(id) { 
    form.action="sellProducts.php"; 
    form['id'].value = id; 
    form.submit(); 
} 

不起作用:

function askForBuy(adProd) { 
    form.action="buyProducts.php"; 
    form['adProd'].value = adProd; 
    form.submit(); 
} 

回答

2

由於產品名稱是一個字符串,因此您需要在HTML中使用該名稱附加引號。你需要逃生者,既然你已經需要使用單引號和雙引號:

echo '<td> <button type="submit" onclick="askForBuy(\''.$v->product_name.'\')"> Buy </button> </td>'; 

注意添加的\'

由於這些轉義引號可能會在更復雜的情況下變成一種痛苦,而且由於這是更好的做法,所以您應該考慮使用純JavaScript代碼綁定事件處理程序,而不是使用onclickHTML屬性。