我正在为SugarCRM构建一个模块,供许多人使用。早期我在使用PHP丢失部分POST保存数据时遇到了问题,我得知问题是由{INRI设置max_input_vars
一旦我增加了为max_input_vars
设置的值,一切都再次完美。
我能够使用max_input_vars
文件设置.htaccess
值。我准备好你不能用PHP函数ini_set()
我主要担心的是这个模块将在许多不同的服务器上使用,因为它将被许多人使用。
我需要编写一个解决方案,要求用户什么都不做,并且我的模块仍然可以继续正常运行。
在另一篇文章中,用户建议我使用jQuery AJAX POST将已保存此数据的HTML表单更改为我的后端PHP脚本。
他说我应该通过将JSON对象结束到我的PHP后端脚本而不是大量的POST Vars来更改它以保存数据。
有没有其他人认为这是一个很好的解决方案?
这是我现在处理SAVE的当前前端代码....
function ajaxSaveTasks(){
window.unsavedChanges = false;
// Display a message to the user that we are Saving
ajaxStatus.showStatus('Saving Task Changes');
var url = "index.php?module=apoll_Web_Projects"; // the script where you handle the form post.
//SUGAR.ajaxUI.showLoadingPanel();
jQuery('#project_tasks').showLoading(showLoadingSettings);
$.ajax({
type: "POST",
url: url,
data: $("#editTasksForm").serialize(), // serializes the form's elements.
success: function(data)
{
//alert(data); // show server response
//SUGAR.ajaxUI.hideLoadingPanel();
hideTaskUnSavedChangesHeaderBar()
jQuery('#project_tasks').hideLoading();
}
});
ajaxStatus.hideStatus();
};
其他用户提到,如果修改此代码以使用JSON POST我的FORM,那么我可以完全解决max_input_vars
问题。如果我理解正确的话,他说的不是我发送的1000多个Form POST变量,而是将它作为1个变量发送,而变量中包含一个巨大的JSON字符串......听起来不错吗?
如果这听起来像是一个很好的解决方案,那么有人可以告诉我如何实现这一目标吗?
我的FORM是批量添加和编辑项目任务数据库记录的页面,因此它可能非常大并且在数据库中有数百个任务记录要更新。
在上面的代码中,您可以看到它只是运行$("#editTasksForm").serialize()
来获取所有表单字段。