You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JQuery中FormData为空,Ajax提交无数据问题求助

问题分析与解决方案

核心问题1:console.log(formData)无法正确显示内容

FormData对象不能直接通过console.log查看内部数据,这是浏览器的默认行为,并非你的FormData为空。要验证FormData是否包含数据,需要通过遍历的方式输出:

// 替换console.log(formData)为以下代码
for (let [key, value] of formData.entries()) {
    console.log(`${key}:`, value);
}

核心问题2:Submit事件未正确接收event参数

你的jQuery提交事件函数没有接收event参数,直接调用event.preventDefault()会导致未定义错误,可能阻止默认行为失效,进而影响Ajax提交。修改后的jQuery代码如下:

$("form#updmenform").submit(function(event){ // 新增event参数
    event.preventDefault();
    if( window.FormData !== undefined ) 
    {
        var form = document.querySelector('form#updmenform'); // 明确指定表单ID,避免页面多个表单时出错
        var formData = new FormData(form);
        
        // 正确打印FormData内容
        for (let [key, value] of formData.entries()) {
            console.log(`${key}:`, value);
        }
    
        $.ajax({
            url: 'updmenu.php',
            type: 'POST',
            data: formData,
            success: function(response){
                alert(response);
            },
            cache: false,
            contentType: false,
            processData: false
        });
    } else {
        alert('FormData Undefined');
    }
});

额外HTML语法错误修复

你的<option>标签中selected属性写法错误,echo "Selected =Selected"会生成无效的HTML属性,应修改为标准写法:

// 以Food选项为例,其他选项同理
<option value='Food' <?php if(isset($_POST['CategoryCode']) && $_POST['CategoryCode']=="Food"){ echo "selected";}?>>Food</option>

(注:HTML属性不区分大小写,但selected是标准写法,无需写成Selected =Selected)

PHP端验证建议

确保updmenu.php中正确接收数据,示例代码:

<?php
var_dump($_POST);
var_dump($_FILES);
?>

同时检查PHP配置文件php.ini中的以下参数,确保文件上传功能正常:

  • upload_max_filesize:设置足够大的值(如10M)
  • post_max_size:需大于upload_max_filesize
  • max_execution_time:确保处理时间足够

内容的提问来源于stack exchange,提问作者Amateur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:12