我不知道这是否是JavaScript, jQuery或JSON的问题,但是当我在任何数据条目(见下面的var title1)中使用空格时,空格后的一切都被省略。也许数据必须以某种方式编码?我试着使用&,而不是实际的空格。
为了简单起见,我试图删除任何与此问题无关的代码。
html、javascript:
<div id="verification"></div>
<script>
function update() {
$.ajax({
url: 'update.php', //php
data: "",
dataType: 'json',
success: function (data) {
//on receive of reply
var title1 = data[2];
$('#verification').html("<img src=images/data-image.gif title="+title1+"></img>"); //output to html
}
});
}
</script>
json响应
["这是一个很长的测试,有123个数字和字母。*。测试")
输出
php* * * * * * * * * * *
$result = mysql_query("SELECT title1 FROM users WHERE username = '$foobar'")
or die(mysql_error());
$array = mysql_fetch_row($result);
echo json_encode($array);
如果在属性定义中缺少引号,则最终的HTML字符串将以如下方式结束:
<img src=images/data-image.gif title=this is a really long test that has 123 numbers and letters. * . test></img>
,这就是title
属性中只显示第一个单词的原因。为了避免转义问题,我建议使用jquery创建元素,如:
var $img = $('<img>').attr('src', 'images/data-image.gif').attr('title', title1);
$('#verification').append($img);
您的title属性将不带引号结束。任何时候,属性不是字母数字字符,就必须加引号。试一试:
$('#verification').html("<img src=images/data-image.gif title='"+title1+"'></img>");