7

我正在尝试制作一个 jQuery 1.9.1 AJAX + icanhaz/mustache 的工作示例。这是我的模板:

<script id="user" type="text/html">
    {{#users}}<li>Username: {{ username }}, fullname: {{ fullname }}</li>{{/users}}
</script>

这是我的 JavaScript:

$(document).ready( function() {
    $("#user-btn").click(function() {
        $.ajax({
            type: "GET",
            url: "../php/client/json.php",
            data: {
                type: "users"
            }
        }).done(function( response ) {
            var element = $('#dialog-message');
            element.html("<ul>");
            element.append(ich.user(response));
            element.append("</ul>");
        });
});

来自该地址的 AJAX 响应类似于:

{"users":[{"username":"jd","fullname":"John Doe"},{"username":"jl","fullname":"John Lennon"}]};

使用以下代码,icanhaz 无法为我呈现任何内容。我花了一些时间在 javascript 控制台上,发现它typeof responsestring我所期望的object。Icanhaz 也期望对象 - 这就是它没有设法呈现正确响应的原因。

我做错了什么还是我只是一个不知道 jquery.ajax 总是返回字符串响应的可怜的新手?如果是这样,我应该如何处理它们?

4

3 回答 3

14

如果您从 AJAX 调用中获得string返回,则需要添加dataType: "json". 如果可能,这将使 jQuery 将响应解析为 JSON。

$(document).ready( function() {
    $("#user-btn").click(function() {
        $.ajax({
            type: "GET",
            url: "../php/client/json.php",
            data: {
                type: "users"
            },
            dataType: "json"
        }).done(function( response ) {
            ...
        });
});

您确定您的ich.user方法需要一组用户,而不仅仅是一个用户对象吗?

于 2013-03-27T23:49:37.137 回答
3

尝试. dataType: "json"_$.ajax

于 2013-03-27T23:48:37.157 回答
2

修改点击功能:

$("#user-btn").click(function () {
    $.ajax({
        type: "GET",
        url: "../php/client/json.php",
        data: {
            type: "users"
        },
        dataType: 'json',
        success: function (data) {
            // Your code...
        },
        error: function (xhr, textStatus, errorThrown) {
            alert(textStatus);
        }
    });
});
于 2013-03-27T23:53:15.893 回答