为什么我的.text()操作在AJAX调用后不起作用?

时间:2014-06-30 06:05:59

标签: javascript jquery ajax join split

为什么我的splitjoin无效?

$.getJSON(url, function (data) {
    // create ".tags" elements and populate them with data
});
$(".tags").text(function (i, val) {
   return val.split(",").join(", ");
});

Fiddle

我只是想在每个','(逗号)之后添加空格。

3 个答案:

答案 0 :(得分:7)

由于$.getJSON是异步调用,您需要在$.getJSON

的回调方法中执行操作
$.getJSON('http://www.json-generator.com/api/json/get/bXClHuexaq?indent=2', function (data) {
  //... your code

    $(".tags").text(function (i, val) {
        return val.split(",").join(", ");
    });
 });

Fiddle

答案 1 :(得分:3)

正如Satpal提到的,使用$ .getJSON是必需的

$.getJSON(url, function (data) {
    // code
    $(".tags").text(function (i, val) {
        return val.split(",").join(", ");
    });
 });

但是,作为一般做法,我建议使用正则表达式,主要是因为更长的字符串数组需要更多内存

$(".tags").text(function(i, val) {
    return val.replace(/,/g, ", ");
});

答案 2 :(得分:0)

将您的拆分逻辑放在callback中。检查以下jsfiddle

http://jsfiddle.net/8TdZ3/6/

$(document).ready(function (e) {
    $.getJSON('http://www.json-generator.com/api/json/get/bXClHuexaq?indent=2', function (data) {
        var output = "<table width='100%' cellspacing='0' cellpadding='0'>";
        output += "<tr>";

        output += "<th width='20%'>" + 'Tags' + "</th>";
        output += "<th width='15%'>" + 'Friends' + "</th>";
        output += "</tr>";
        for (var i in data) {
            output += "<tr>";

            output += "<td class='tags'>" + data[i].tags + "</td>";
            output += "<td>";
            for (var j = 0; j < data[i].friends.length; j++) {
                output += "<div>" + data[i].friends[j].name + "</div>";
            }
            output += "</td>";
            output += "</tr>";
        }
        output += "</table>";

        document.getElementById("placeholder").innerHTML = output;
          $(".tags").text(function (i, val) {
        alert(i);
        return val.split(",").join("#");
    });

    });

});