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

jQuery .ajax成功回调返回undefined,疑似PHP脚本未执行?

问题:Ajax提交表单返回"undefined"且数据未插入

近期大量用户反馈网站多个不同的Ajax提交表单均返回“undefined”响应,具体情况如下:

现象

  • Ajax的success函数触发,页面显示绿色的“undefined”消息
  • PHP脚本无报错信息,error_log中无相关记录,但数据从未插入,仿佛提交时脚本未运行
  • 问题涉及网站中多个Ajax调用搭配PHP脚本的变体

相关代码

Ajax提交示例

//Post Request via Ajax
jQuery.ajax({
  url: submissionurl,
  type: "POST",
  data: {
    deckDescription : deckDescription,
    deckExcerpt : deckExcerpt,
    deckformat : deckformat,
    youtubeLink : youtubeLink,
    maindeckarray : JSON.stringify(maindeckarray),
    maindeckarray_og : JSON.stringify(maindeckarrayog),
    maindecknamesarray : JSON.stringify(maindeckNamearray),
    extradeckarray : JSON.stringify(extradeckarray),
    sidedeckarray : JSON.stringify(sidedeckarray),
    submit_date : today,
    coverCard : coverCard,
    deckSourceName : deckSourceName,
    deckSourceURL : deckSourceURL,
    publicDeck : publicDeck,
    decknumber : decknumber
  },
  success:function(response) {            
    jQuery('#notifyToastSubmit .toast-body').html('<span style="color:green">'+response.success+'</span>');
    jQuery('#notifyToastSubmit').toast('show');
    jQuery('form :input[type="submit"], form :input[type="text"], textarea').prop('disabled', true).css({"background-color" : "grey", "cursor" : "not-allowed"});       
  },
  error: function(xhr, status, error) {
    var err = JSON.parse(xhr.responseText);
    jQuery('#notifyToast .toast-body').html(err.error);
    jQuery('#notifyToast').toast('show'); 
    jQuery('form :input[type="submit"]').prop('disabled', false);
  }
}); 

PHP成功响应代码

http_response_code(200);    
header('Content-Type: application/json');     
echo json_encode(array("success" => "Your deck has been submitted! You can view your submitted deck <a href='https://ygoprodeck.com/deck/".$prettyurl."' class='deckLink'>here</a>."));
exit();

PHP错误响应代码

http_response_code(400);
header('Content-Type: application/json');        
echo json_encode(array("error" => "You must have at least 40 cards in your Main Deck."));  
exit();

已排查内容

  • 检查服务器modsec日志和Cloudflare防火墙日志,未发现脚本被拦截的情况
  • 本地测试该系统数月,从未遇到此错误

临时修改方案

已对Ajax调用的success回调做如下修改,等待用户反馈确认是否解决问题:

success:function(response) {
  if(!response.success){
      var returnmsg = "An error has occurred when submitting. Please try to hit the submit button again.";
  }else{
      var returnmsg = response.success;
      jQuery('form :input[type="submit"], form :input[type="text"], textarea').prop('disabled', true).css({"background-color" : "grey", "cursor" : "not-allowed"});
  }  
  jQuery('#notifyToastSubmit .toast-body').html('<span style="color:green">'+returnmsg+'</span>');
  jQuery('#notifyToastSubmit').toast('show');         
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 05:36:07