2014-09-02 179 views
0

我使用表单获取将记录在我网站的电子报中的电子邮件地址。 这种形式是通过AJAX管理发送和获取响应:如何传递这个php变量?

$.ajax({ 
     url: "./control/newsletter/ct_newsletter_subscribe.php", 
     type: "POST", 
     data: $this.serialize(), 
     success: function(html) { 
      alert(html); // html contient l'id du dernier inscrit 
      if(html == 'erreur'){ 
       var message = "<p>Erreur d'enregistrement en BDD</p>"; 
      }else if(html != 'erreur'){ 
       var message = "Adresse email enregistrée en BDD : id = "+html; 
      } 

我想响应(即获得lastInsertId)在第二功能被用来获得记录的信息。

在文件ct_newsletter_subscribe.php中,我得到了lastInsertId,但我无法重复使用它。

 $LastInsertId = add_email_newsletter($newsletterNom, $newsletterPrenom, $newsletterEmail, $newsletterGsm, $registered, $regdate, $codeConfirm); 
     echo '<script>alert("ct newsletter subscribe L36 : '.$LastInsertId.'")</script>';// DEBUG 
     $reponse = $LastInsertId; 
     echo '<script>alert("ct newsletter subscribe L38 : '.$reponse.'")</script>';// DEBUG 

在这一部分中,$作出反应并$ LastInsertId包含的最后一个ID,但我不能再使用它的另一个功能。 2“回声...”不给我希望他们显示的变量 我不明白为什么。

+0

http://stackoverflow.com/a任何内容/ 2722770/1401094 – 2014-09-02 12:57:27

+1

不要从ajax调用发送html和内联js,发送数据。我会推荐json,但是当然xml会做 – Steve 2014-09-02 13:02:12

+0

你怎么“重用”它呢? – 2014-09-02 13:02:25

回答

0

表单由带有AJAX的.js管理。 AJAX将$ _POST发送到ct_newsletter_subscribe.php。 在ct_newsletter_subscribe.php中,我调用函数“add_email_newsletter”,他的回应$ LastInsertId是正确的。

然后我想重复使用$ LastInsertId到另一个功能:

// First function works correctly : 
    $LastInsertId = add_email_newsletter($newsletterNom, $newsletterPrenom, $newsletterEmail, $newsletterGsm, $registered, $regdate, $codeConfirm); 
    echo '<script>alert("ct newsletter subscribe L36 : '.$LastInsertId.'")</script>';// DEBUG -> $LastInsertId is empty 
    $reponse = $LastInsertId; // this result is correct 
    echo '<script>alert("ct newsletter subscribe L38 : '.$reponse.'")</script>';// DEBUG -> $reponse is empty 

    if($reponse != 'erreur'){ // if no error appear in the first function 
     echo '<script>alert("ct newsletter subscribe L42 : '.$reponse.'")</script>';// DEBUG 
     //Récupération des données enregistrées : 
     // Fonction container : 
     include_once('../../model/newsletter/mo_newsletter_email_infos.php'); 
     //récupération des infos selon l'id retournée par $reponse : 
     $retourNewsletterEmailInfos = get_newletter_email_infos($LastInsertId); 

     $reponse .= ' & Fonction get_infos : '.$retourNewsletterEmailInfos[0]['email']; 
    } 
    echo $reponse; 

然后在AJAX的 “HTML” 的结果是正确地插入了最后一个ID。

但在PHP中,$ LastInsertId是空的功能:

$retourNewsletterEmailInfos = get_newletter_email_infos($LastInsertId); 

调试行不显示在$效应初探

echo '<script>alert("ct newsletter subscribe L42 : '.$reponse.'")</script>';// DEBUG 
+0

问题出在第一个函数add_email_newsletter。最后,我用“回声”在AJAX中导致了一个不需要的回答。我现在使用“返回”,我可以妥善处理。谢谢你的帮助! – kobano 2014-09-03 10:30:11