空格导致我的javascript显示不正确(修剪输出)


spaces are causing my javascript to display incorrectly (trims the output)

我不知道这是否是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>");