1

下面是我的代码,

          var mapForm = document.createElement("form");
          mapForm.target = "_blank";    
          mapForm.method = "POST";
          mapForm.action = "delete";

          // Create an input
          var mapInput = document.createElement("input");
          mapInput.type = "hidden";
          mapInput.name = "uploaded";
          mapInput.value = file.name;

          // Add the input to the form
          mapForm.appendChild(mapInput);

          // Add the form to dom
          document.body.appendChild(mapForm);

          // Just submit
          mapForm.submit();

它确实有效,但是在提交值之后,它会在新窗口中打开操作 URL,因为我已经给出了mapForm.target = "_blank";,是否可以在不打开任何窗口的情况下提交表单我的意思是它应该留在同一个窗口中,但它不应该转到“删除页面”?,而不是使用ajax ...

4

3 回答 3

8

您可以将数据发送到隐藏的 iframe:

var mapForm = document.createElement("form");
mapForm.target = "myIframe";
mapForm.method = "POST";
mapForm.action = "delete";

//Create an iframe
var iframe = document.createElement("iframe");
iframe.src = "response.php";
iframe.name = "myIframe";
iframe.style.width = '1px';
iframe.style.height = '1px';
iframe.style.visibility = 'hidden';
iframe.style.position = 'absolute';
iframe.style.right = '0';
iframe.style.bottom = '0';
mapForm.appendChild(iframe);

// Create an input
var mapInput = document.createElement("input");
mapInput.type = "hidden";
mapInput.name = "uploaded";
mapInput.value = file.name;

// Add the input to the form
mapForm.appendChild(mapInput);

// Add the form to dom
document.body.appendChild(mapForm);

// Just submit
mapForm.submit();

// Remove mapForm 
document.body.removeChild(mapForm);
于 2013-07-29T09:04:01.583 回答
0

如果你敢使用 JQuery,你可以使用 AJAX 来触发对服务器端的请求,在这种情况下,我很容易假设 delete.php。

在 HTML 文件的头部添加以下行以包含最新的 JQuery API。

<script src="http://code.jquery.com/jquery-latest.min.js"
    type="text/javascript"></script>  

在您的 JS 中直接创建表单,使用 $ (JQuery) 方法将 DOM 元素转换为 JQuery 对象,并使用新创建的 JQuery 对象的 ajax() 方法创建 AJAXForm。

<script type="text/javascript">

      var mapForm = document.createElement("form");
      mapForm.method = "POST";
      mapForm.action = "delete.php";

      // Create an input
      var mapInput = document.createElement("input");
      mapInput.type = "hidden";
      mapInput.name = "uploaded";
      mapInput.value = file.name;

      // Add the input to the form
      mapForm.appendChild(mapInput);

      document.body.appendChild(mapForm);

      var frm = $(mapForm);
      frm.submit(function () {
          $.ajax({
              type: frm.attr('method'),
              url: frm.attr('action'),
              data: frm.serialize(),
              success: function (data) {
                  alert('ok');
              }
          });

          return false;
      });

</script>

这将防止您的 FORM 触发重定向到另一个页面,而是使用对服务器脚本的异步请求来处理数据并推送响应,您可以在 AJAXForm 的成功函数中进行处理。

于 2013-07-29T09:22:44.507 回答
0

您可以检查新的 FormData HTML5 功能。它可以让你通过 Ajax 发送一个表单(一个像正常一样的真实表单):https ://developer.mozilla.org/en-US/docs/Web/Guide/Using_FormData_Objects

于 2013-07-29T09:04:09.737 回答