我有stackoverflow幫助我在我的最後一個問題的JavaScript函數。該函數創建了一個div,然後將兩個表單輸入字段添加到新創建的div中。該函數有4個參數。其中之一是表單輸入字段的值。問題是如果單引號(撇號)在它打破函數的值。我正在開發PHP和使用jQuery。我嘗試了addslashes(),addcslashes($ text,''')和json_encode(),這些都適用於雙引號,但不是單引號。 。一個撇號的鏈路2原樣適用,以其 「蘇打」 值將引號傳入javascript函數
例:
<?php
$text = "I'm Frustrated";
$text = addslashes($text);
?>
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#item_box1{
width: 300px;
margin: 0 auto;
height: 100px;
border: 1px solid blue
}
#item_box2{
width: 300px;
margin: 0 auto;
height: 100px;
border: 1px solid red
}
.link-button {
color: rgb(0, 0, 255);
cursor: pointer
}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.3.js"></script>
<script type="text/javascript">
function add_item(code, title, price, divbox)
{
var idtag, item_title, item_price, item_code;
// Generate an id based on timestamp
idtag = "div_" + new Date().getTime();
// Generate a new div.
$(divbox).append("<div id=\"" + idtag + "\"></div>");
if (divbox == "#item_box1")
{
item_title = $("<input/>", {
type: 'text',
name: "box1_item_title[]",
value: title
});
item_price = $("<input/>", {
type: 'text',
name: "box1_item_price[]",
value: price
});
// Show in the document.
$("#" + idtag).append(item_title, item_price);
}
else
{
item_code = $("<input/>", {
type: 'text',
name: "box2_item_code[]",
value: code
});
item_title = $("<input/>", {
type: 'text',
name: "box2_item_title[]",
value: title
});
// Show in the document.
$("#" + idtag).append(item_code, item_title);
}
}
</script>
</head>
<body>
<a class="link-button" onclick="return add_item('xyz', "<?php echo $text;?>", '45.99', '#item_box1');">Add Item to Box 1</a>
<br>
<a class="link-button" onclick="return add_item('123', 'Soda', '1.99', '#item_box2');">Add Item to Box 2</a>
<br>
<br>
<div id='item_box1'></div>
<div id='item_box2'></div>
</body>
頁面的源最終看起來像這樣:
該值可能有一個雙重報價以及單引號。所以這打破了它:$ text =「我是沮喪\」評級「; $ text = addslashes($ text); – David
正如@staticsan指出的那樣,引號應該被編碼爲HTML實體。您可以通過在addslashes之前通過htmlspecialchars傳遞代碼來實現。 –