Rumah > Soal Jawab > teks badan
P粉7941776592023-08-21 09:06:07
Pilihan lain ialah menggunakan iframe dan tetapkan sasaran borang padanya.
Anda boleh mencuba ini (ia menggunakan jQuery):
function ajax_form($form, on_complete) { var iframe; if (!$form.attr('target')) { //为表单创建一个唯一的iframe iframe = $("<iframe></iframe>").attr('name', 'ajax_form_' + Math.floor(Math.random() * 999999)).hide().appendTo($('body')); $form.attr('target', iframe.attr('name')); } if (on_complete) { iframe = iframe || $('iframe[name="' + $form.attr('target') + '"]'); iframe.load(function () { //获取服务器响应 var response = iframe.contents().find('body').text(); on_complete(response); }); } }
Ia berfungsi dalam semua penyemak imbas dan anda tidak perlu membuat siri atau menyediakan data. Satu kelemahan ialah anda tidak boleh memantau kemajuan.
Selain itu, sekurang-kurangnya untuk Chrome, permintaan itu tidak muncul di bawah tab "xhr" dalam alat pembangun, tetapi di bawah "doc".
P粉0644484492023-08-21 00:11:35
Masalah yang saya hadapi ialah menggunakan pengecam jQuery yang salah.
Anda boleh menggunakan borang menggunakan ajax untuk memuat naik data dan fail.
PHP + HTML
<?php print_r($_POST); print_r($_FILES); ?> <form id="data" method="post" enctype="multipart/form-data"> <input type="text" name="first" value="Bob" /> <input type="text" name="middle" value="James" /> <input type="text" name="last" value="Smith" /> <input name="image" type="file" /> <button>提交</button> </form>
jQuery + Ajax
$("form#data").submit(function(e) { e.preventDefault(); var formData = new FormData(this); $.ajax({ url: window.location.pathname, type: 'POST', data: formData, success: function (data) { alert(data) }, cache: false, contentType: false, processData: false }); });
Versi ringkas
$("form#data").submit(function(e) { e.preventDefault(); var formData = new FormData(this); $.post($(this).attr("action"), formData, function(data) { alert(data); }); });