AJAX麻烦,从PHP回复

时间:2016-05-26 14:38:13

标签: javascript php ajax

尝试使用Mail Chimp API 3.0创建Mail Chimp注册表单。

到目前为止,我有一个使用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);

目前这会产生一个警告“未定义。”

1 个答案:

答案 0 :(得分: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>");
                        }
                    });