执行rest url后不调用Jquery成功函数

我的表格详情如下:

我的文件定义如下:

  

我的自定义按钮相关代码如下:

  Create  

我有以下function,单击自定义按钮时调用该function:

 function createAttachmentRequest(){ alert("ONE"); $("#CreateAttachmentForm").trigger("submit", function() { var formData = new FormData($(this)[0]); alert("TWO"); $.ajax({ url: 'http://HDDT0214:8080/pqawdTestWebApp/uploadFile', type: 'POST', data: formData, async: false, success: function (data) { alert("test"); alert(data) }, cache: false, contentType: false, processData: false }); return false; 

});

上面的Jquery代码成功调用了我的rest服务,其余服务也返回了响应。 令人惊讶的是,即使有来自rest服务的响应,也不会调用/调用成功函数。 我的代码有问题吗?

看看https://api.jquery.com/trigger ,我认为你不能将函数作为第二个参数传递给“trigger”方法。 该参数应该是一个包含一些额外选项的对象或数组,然后将这些选项传递给事件处理函数(应在其他地方声明)。 你在那里定义的匿名函数运行。 因此,表单的正常回发行为无论如何都会继续,并且没有ajax调用。 这就是为什么你似乎看到了一个响应,但没有触发“成功”或“错误”回调 – 首先从来没有ajax调用。

您所做的不是在元素上定义事件的正确方法。 “触发器”方法旨在触发先前已定义的事件。 它不能用于定义事件处理程序本身。

这应该工作 – 它为表单的“submit”事件创建一个事件处理程序,它会抑制默认的回发行为并运行ajax调用:

 $(document).ready(function() { $("#CreateAttachmentForm").submit(function(event) { event.preventDefault(); //stop default postback behaviour. $.ajax({ url: 'http://HDDT0214:8080/pqawdTestWebApp/uploadFile', type: 'POST', data: formData, success: function (data) { alert("test"); alert(JSON.stringify(data)); }, error: function(jqXHR, errorThrown, textStatus) { alert("Ajax error: " + jqXHR.status + " - " + jqXHR.statusText); console.log(jqXHR.responseText); }, contentType: false, processData: false }); }); }); 

然后,您可以删除createAttachmentRequest()函数及其所有引用。

注意只要在表单中向页面呈现