我正在努力获得成功响应,将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" />
答案 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
,因为您不遵循这些过程来确保正确解析。