2017-06-07 21 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>'; 

注追加されました\':あなたはすでにシングルとダブルの両方の引用符を使用する必要があるので、あなたは、それらをエスケープする必要があります。

これらのエスケープされた引用符は、より複雑な状況では苦痛になる可能性があり、また、より良い方法であるため、HTML属性onclickを使用する代わりに、イベントハンドラを純粋なJavaScriptコードでバインドすることを検討する必要があります。