我有一个问题,当提交表单数据使用AJAX调整屏幕到移动设备。当你将页面大小调整为桌面大小时,一切都可以正常工作。
我使用jQuery数据表,我有一个按钮上的每一行来编辑表单。当页面没有调整大小和数据表全屏时,所有的工作都很好,只要我调整页面的移动和平板电脑大小,数据表在左边创建一个绿色的"加"图标来扩展表,但是当我点击编辑按钮时,我得到一个错误Invalid Ajax Request
和控制台Uncaught SyntaxError: Unexpected token <
这同样适用于大屏幕,但不适用于手机和平板电脑。
我使用PHP MVC,这里是代码:
我的jQuery函数:$(function () {
$("form#editEmailTemplate").on('submit', function (e) {
var postData = $(this).serialize();
var formURL = $(this).attr("action");
var formMethod = $(this).attr("method");
$.ajax({
url: formURL,
type: formMethod,
data: postData,
mimeType: "multipart/form-data",
scriptCharset: "UTF-8",
ContentType: 'html',
dataType: 'html',
success: function (data, textStatus, jqXHR) {
var returnedData = JSON.parse(data);
for (var i = 0; i < returnedData.length; i++) {
$('#response').empty();
$("#DataTableEmails_wrapper").hide();
$("#updateEmailTemplate").show();
$('#emailid').val(returnedData[0][i].emailid);
$('.emailtitle').text(returnedData[0][i].title);
$('#emailsubject').val(returnedData[0][i].subject);
$('#emailtext').val(returnedData[0][i].textmessage);
$('#emailhtml').val(returnedData[0][i].htmlmessage);
}
},
error: function (jqXHR, textStatus, errorThrown) {
$('#response').html('<div class="alert alert-danger">Something went wrong !!! . Email tremplate has NOT been selected</div>');
setTimeout(fade_out, 10000);
function fade_out() {
$("#response").fadeOut().empty();
}
}
});
e.preventDefault(); //STOP default action
});
});
HTML格式是:
<form class="ui segment error" role="form" method="post" accept-charset="UTF-8"
action="mail/editEmailTemplate/" id="editEmailTemplate">
<input type="hidden" name="emailid" value="' . $value['emailid'] . '">
<input type="image" name="submit" value="" src = "' . ICO . 'system/configure.png"
width="20" height="auto" title = "' . lang('BTN_EDIT_EMAIL_TEMPLATE_TOOLTIP') . '"/>
</form>
表单在所有屏幕尺寸上具有相同的结构和数据,因此在调整大小时不会改变。
有可能您的formURL返回一个未找到的HTML格式的404。当它这样做时,它将包含
<html></html>
不是有效的javascript,或者如果该文件是PHP并且其中有错误,它也会响应以'<'开头的HTML格式。因为这不是一个有效的响应,它将在遇到时中断。