我有以下Jquery回调函数,我对它有一点怀疑(我不太了解Jquery):
$("form.readXmlForm").submit(function() {
// Riferimento all'elemento form che ha scatenato il submit
var form = $(this);
// Variabile che contiene il riferimento al bottone clickato
var button = form.children(":first");
$.ajax({ // Viene eseguita la chiamata AJAX
type: "POST", // Tipo di richiesta: POST
// URL verso quale viene inviata la richiesta
url: form.attr("action"),
// Dati XML inviati:
data: "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><javaBean><foo>bar</foo><fruit>apple</fruit></javaBean>",
// Tipo di media type accettabile dalla response:
contentType: "application/xml",
dataType: "text",
success: function(text) {
MvcUtil.showSuccessResponse(text, button);
},
error: function(xhr) {
MvcUtil.showErrorResponse(xhr.responseText, button);
}
});
正如您所见,此函数只是对后端执行AJAX请求,为此请求设置参数。
我已设置我向URL发送请求,请求是POST请求,并且我发送的数据是以下字符串:
“barapple”
我很难理解 contentType 和 dataType
之间的区别我认为 contentType 指定HTTP响应中可接受的数据类型,是不是?
和dataType?说啥?我在HTTP请求中发送的数据类型?
在这种情况下是“text”,因为我发送了一个文本字符串,其中包含了XML代码?
答案 0 :(得分:158)
contentType(默认值:'application / x-www-form-urlencoded; charset = UTF-8')
类型:字符串
将数据发送到服务器时,请使用此内容类型。默认为“application / x-www-form-urlencoded; charset = UTF-8”,这在大多数情况下都适用。如果您明确地将内容类型传递给$ .ajax(),那么它将始终发送到服务器(即使没有数据发送)。如果未指定charset,则使用服务器的默认字符集将数据传输到服务器;你必须在服务器端适当地解码它。
和
dataType(默认值:Intelligent Guess(xml,json,script或html))
类型:字符串
您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本,其他任何东西将是以字符串形式返回。)
它们与你的想法基本相反。
答案 1 :(得分:74)