2016-05-26 105 views
0

嘗試使用Mail Chimp API 3.0創建Mail Chimp註冊表單。AJAX麻煩,從PHP獲得回覆

到目前爲止,我有一個表單使用jQuery Validation插件進行驗證,並使用jQuery Form插件發佈到PHP腳本。 PHP表單正在基於多個測試工作。我也確信數據會從表單傳遞到PHP腳本,從PHP腳本獲取數據返回到頁面正在崩潰的地方。

這裏是JS方面的東西。

// jquery form for submitting —— this is where the part that is not working, I just want back an error code (e.g., 400, 404, 500) or status (e.g., pending, subscribed) and pass that to the var user_status. 
    submitHandler: function(form) { 
    jQuery(form).ajaxSubmit({ 
    url: '/mc_ajax/process_mc_getstatus.php', 
    success: function() { 


     // translate variables form php to js // 
     function reqListener() { 
     console.log(this.responseText); 
     } 
     var oReq = new XMLHttpRequest(); //New request object 
     oReq.onload = function() { 
     // var user_status = JSON.parse(this.responseText); 
     }; 
     oReq.open("get", "/mc_ajax/process_mc_getstatus.php", true); 
     oReq.send(); 

     alert(this.responseText); 

現在,user_status是我想從PHP腳本填充的變量。我使用 var user_status = JSON.parse(this.responseText); 但是由於數據已經被解析,導致錯誤。

以下是我在PHP文件用於發送數據的回道:「未定義」

// $json_data contains the output string 
    $json_data = curl_exec($ch); 

    // close cURL resource, and free up system resources 
    curl_close($ch); 

    // Get status from JSON // 
    $json_data = json_decode(utf8_encode($json_data)); 
    $user_status = $json_data->status; 

    echo json_encode($user_status); 

這是目前導致該說,警報

+0

檢查每一步的var_dump,$ user_status可能不是對象或數組。 – LordNeo

+0

$ user_status肯定是在php腳本中使用的。在PHP腳本的最後有一個mail()發送一封電子郵件來證明PHP腳本正在工作。 $ user_status用於填充部分 – justsomeone

回答

0

明白了吧。將JS更改爲以下內容:

   // jquery form for submitting 
       submitHandler: function(form) { 
        jQuery('#mc-embedded-subscribe-form').hide(); 
        jQuery('#newsletter-form').append("<p class='inprogress'>Working on that for you.</p>"); 

        jQuery(form).ajaxSubmit({ 
         url: '/mc_ajax2/process_mc.php', 

         success: function(responseText, statusText, xhr, $user_status) { 
          jQuery('.inprogress').hide(); 
          // jQuery('#newsletter-form').append(responseText); 
          jQuery('#newsletter-form').append("<p class='thanks'>" + responseText + "</p>"); 
         } 
        });