为什么控件没有从PHP文件返回到AJAX成功函数?

问题描述:

我为我的网站使用PHP,Javascript,AJAX。为什么控件没有从PHP文件返回到AJAX成功函数?

我在下面只提供了必要的代码。

JS代码(AJAX功能代码):

$("#btn_add_event").click(function(){ 

    var strSeriaze = $("#formAddEvent").serialize(); 
    url = $("#formAddEvent").attr('action'); 
    $("#btn_add_event").attr('disabled', 'disabled'); 
    $("#addEventErrorMsg").html(''); 
    $.ajax({ 
     url: url, 
     type: "POST", 
     data: {postData:strSeriaze}, 
     beforeSend: function(){ 
      $('#loader-icon').show(); 
     }, 
     complete: function(){ 
      $('#loader-icon').hide(); 
     }, 
     success: function(data){ 
     //Control is not returning here on success from PHP file 
      $('#loader-icon').hide(); 

      if(data == "Success") 
      { 
       $("#myModal-add-event").modal('hide'); 
       $("#myModal-add-event").hide(); 
       window.location.href = site_url + "event_index.php"; 
       return false; 
      } 
      else 
      { 
       $("#btn_add_event").attr('disabled', false); 
       $("#addEventErrorMsg").show(); 
       $("#addEventErrorMsg").html(data); 
      } 
     }, 
     error: function(){} 
    }); 
    }) 

我试着调试通话是完全将PHP文件中的问题,书面那边也在努力,但控制不被退回到逻辑js文件(即AJAX成功函数)。反过来,我无法执行成功函数内写入的代码。

请纠正我在我的代码做了错误。

以下是执行后,预计返回控制js文件(即。AJAX成功funtion)所需的PHP代码,但它没有发生。

if($ret) { 
    $eventAddResultArr = $objEvent->GetResponse(); 

    if($eventAddResultArr['msg'] == 'Success') { 
    echo "Success"; 
    exit; 
    //From here it is expected to return the control to js file's AJAX success function but it's stopping execution here only 
    } else { 
    $errMsg = ""; 
    foreach($eventAddResultArr['msg'] as $key => $err_msg) { 
     $errMsg .= $err_msg."<br>"; 
    }  
    echo $errMsg; 
    exit; 
    } 
} 

注:我已经把意见在我的代码来让你明白我的问题更好。如果您需要关于我面临的问题的更多信息,请让我知道。

谢谢。

+0

尝试添加一些代码到/调试你的呃ror'处理程序 - 可能是响应未成功返回。 –

+0

你确定,$ ret值是真的吗?! –

+0

@YazidErman:是的,这是真的。 “成功”一词也会打印到控制台中。 – user2839497

如果您没有在阿贾克斯使用数据类型比你可以遵循这样的:

在PHP

使用echo true;,而不是echo "Success";

而在阿贾克斯,请与:

if(data == true) { 
//your code 
} 
+0

嗨,感谢兄弟,你的伎俩为我工作。如果你不介意,请你帮我一个忙,并用DataType添加代码。像json一样。这对我的男人很有帮助。再次感谢。敏锐地等待你的回复。 – user2839497

+0

you r欢迎,@ user2839497, – devpro

+0

@ user2839497确保您也正确地测试了您的错误路由 - 上面的代码可能会将'data'中的错误字符串视为布尔值'true'。'if(data === true)''可能是所有需要的,尽管将两种不同类型返回给同一个处理程序看起来并不正确 - 如果您想出其他一些成功/失败的表示方式会更好,例如' {success:true}'和'{success:false,message:'error message'}',然后测试if(data.success)并在错误处理路径中使用'data.message'。 –

只要删除出口;这将是问题,尤其是没有必要。

+0

尝试过你的诀窍,但结果相同。 – user2839497

+0

那么,调试是必须的!尝试用一个只回显“成功”的文件来替换目标php文件;''并告诉我们会发生什么 –

+1

请参阅devpro的答案。它为我工作。 – user2839497