2016-05-26 132 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>"); 
         } 
        });