2014-09-02 232 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