我对 JQuery 脚本有一些疑问(我是 JQuery 世界的新手):
在视图页面中,我有以下链接:
<li>
<a id="byHeader" href="<c:url value="/mapping/header" />">By presence of header</a>
</li>
因此,单击此链接我会生成一个指向“/mapping/header”文件夹的 HTTP 请求。
现在在视图页面中,我还有以下与先前链接相关的 JQuery 代码:
$("#byHeader").click(function(){ // Select the link having id="byHeader" and assign to it the following callback function executed on the click event
var link = $(this); // Variable refered to the link tag that triggered the event
/* La chiamata AJAX non viene invocata su un oggetto particolare (quindi direttamente su $)
I parametri di input sono: 1) L'URL del link selezionato 2) Il tipo di risposta previso (una stringa)
*/
$.ajax({ url: this.href, dataType: "text",
// Before sending the HTTP Request: execute a function that add an Header to this HTTP Request
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); },
// Success case:
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
// Error case:
error: function(xhr) {
MvcUtil.showErrorResponse(xhr.responseText, link);
}
});
return false;
});
可能我的怀疑是微不足道的,取决于我对 JQuery 缺乏了解......
1)第一个不考虑这行代码中的req变量:
beforeSend: function(req) { req.setRequestHeader("FooHeader", "foo"); },
通过这行代码,我认为我正在向我的 HTTP 请求添加一个标头以将其发送到服务器。
我的问题是了解它指向名为“req”的变量。我认为这是指我的 HTTP 请求,但我的问题是我之前从未声明过它......我正在使用它(并且它运行良好)而之前从未在代码中声明过它!为什么它起作用?
我在想,当我使用 beforeSend 时,它会自动创建一个参数变量,其中包含对我的函数的 HTTP 请求的引用......但是......最后我不知道它是否正确......
2)关于这些代码行的第二个疑问:
success: function(form) {
MvcUtil.showSuccessResponse(form, link);
},
这些代码行处理成功的情况(脚本能够将标头附加到 HTTP 请求的情况)...
阅读 JQuery succes api 文档我了解成功方法(它是一种方法吗?对吗?)接受从服务器返回的数据作为参数...
正如您在代码中看到的那样,服务器向客户端返回一个文本字符串(实际上我有:dataType:“text”)......所以......为什么在前面的代码行中参数被命名为“form”?
服务器向客户端返回文本,而不是“表单”......我错过了什么?
而且......也在这种情况下:我没有创建表单变量,它是一个包含服务器返回的数据的“通用”变量,我可以使用它,因为在前一行中我使用了 JSON 格式阿贾克斯调用?
非常感谢你
安德烈亚