ajax - 获取文本字段的成功响应值

时间:2013-01-24 07:11:37

标签: javascript ajax

我正在努力获得成功响应,将ajax中的值发送到各自的字段中。无论出于何种原因,我都无法做到这一点。在成功部分,我发出了一个“alert(responseObject)”,其中结果在附加图像中。所以数据就像我想要的那样回来,但是我无法将值填充到匹配的字段中。

$(document).ready(function() {
    function myrequest(e) {
        var man_part_number = $('#man_part_number').val();
        $.ajax({
            method: "GET",
            url: "includes/autofill.php",

            data: {
                man_part_number: man_part_number
            },
            success: function(responseObject) {
                alert(responseObject);
                //This alert response results is in attached image
                $('#manufacture').val(responseObject.manufacture);
                $('#model').val(responseObject.model);
                $('#type').val(responseObject.type);
            },
            failure: function() {
                alert('fail');
            }
        });
    }

    $('#fetchFields').click(function(e) {
        e.preventDefault();
        myrequest();
    });
});

<button type="button" id="fetchFields">Fetch</button>

<input type="text" name="manufacture" id="manufacture" />
<input type="text" name="model" id="model" />
<input type="text" name="type" id="type" />

Return AJAX Code

1 个答案:

答案 0 :(得分:2)

返回的字符串是不是 JSON。在“警报”框中查看字符串的结尾。它有“测试”。这意味着响应被jQuery解析为文本,因为您没有指定dataType选项。如果您确实将其指定为“JSON”,则会失败,因为“{...}”旁边的“test”是无效的JSON。我想重点是你需要返回有效的JSON,如果你确实期待JSON,请将dataType调用的$.ajax选项设置为“JSON”。同时,您的服务器应该在响应中设置正确的标头。指定dataType选项仍然更好(有时)。

默认情况下,如果您未指定dataType选项,jQuery将检查响应的标头以获取Content-Type。如果它匹配“JSON”,“HTML”,“Text”,“XML”或其他一些类型的有效类型,它将尝试按此解析它。我打赌您的响应没有正确设置其标头,否则jQuery会尝试将其转换为JSON并失败。它可能以纯文本形式返回,因此jQuery会看到它并将其解析为文本...这就是为什么它解析得很好。但是,您引用的responseObject不是您期望的Object,因为您不遵循这些过程来确保正确解析。