неопределенный индекс пользователя при отправке формы ajax - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь отправить свою форму с помощью ajax.Без Ajax форма работает хорошо. Но когда я пытаюсь отправить эту форму через ajax, получаю ошибку неопределенного индекса пользователя.Вот мой код .ctp

<form action="<?php echo $this->webroot;?>Agent/addprocess" method="post" class="" role="form" id="frm-signup-process" name="frm-signup-process">
    <input name="data[User][selected_user_type]" type="hidden" id="selected_user_type" value="1"/>
    <input type="hidden" name="data[User][user_type]" id="inlineCheckbox1" value="2" id="user_type" />
    <div class="row">
        <div class="col-md-6 col-sm-6 col-xs-12">
            <div class="form-group">
                <label for="Name">First Name</label>
                <input class="form-control" name="data[User][first_name]" placeholder="First Name" type="text" id="first_name" />
            </div>
        </div>
        <div class="col-md-6 col-sm-6 col-xs-12">
            <div class="form-group">
                <label for="Name">Last Name </label>
                <input class="form-control" name="data[User][last_name]" placeholder="Last Name" type="text" />
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-6 col-sm-6 col-xs-12">
            <div class="form-group">
                <label for="Name">Mobile </label>
                <input class="form-control" name="data[User][mobile]" maxlength="10" placeholder="Your Mobile Number" type="text" id="mobile" />
            </div>
        </div>
    <div class="row">
        <a class="btn btn-primary" id="processBtn"  style="background:#22979e;">Register Agent</a>
    <!--  <a class="btn btn-primary" id="processBtn" onclick="registerDistributor()" style="background:#22979e;">Register Agent</a> -->
    </div>
      <div class="footer-msg-box form-group"></div>
</form>

Теперь вот мой контроллер

public function addprocess() {
    $postData = $this->request->is('post');
    print_r(   $postData);
    die('hello this is sanjay');
    if($postData != '' && count($this->request->data) > 0) {
        $logData = array('mobile' => $this->request->data['User']['mobile'], 'email' => $this->request->data['User']['email']);
        if (isset($this->request->data['User']['user_id']) && $this->request->data['User']['user_id'] != '') {
            $logData['id'] = $this->request->data['User']['user_id'];
        }

        $isExist = $this->User->find('first', array('conditions' => $logData));
        $this->User->save($this->request->data);  
    }
    else
    {
        $allData .= "<p style='color:red'>No Response or Error.</p>";
    }
}

Вот мой код ajax

$('document').ready(function() {
  $('#processBtn').click(function() {
    var first_name = $("#first_name").val();
    var selected_user_type = $("#selected_user_type").val();
    var user_type = $("#user_type").val();
    var last_name = $("#last_name").val();
    var mobile = $("#mobile").val();
    console.log(first_name);
    $.ajax({
      type: "POST",
      url: 'addprocess',
      // $.ajax({url: "<?php echo $this->webroot;?>Agent/addprocess",
      dataType: "JSON",
      data: {
        'first_name': first_name,
        'last_name': last_name,
        'mobile': mobile
      }
      async: false,
      contentType: false,
      processData: false,
      cache: false,
      beforeSend: function() {
        $("#processBtn").html("Submit <i class=\"fa fa-spinner fa-spin fa-fw\" aria-hidden=\"true\"></i>");
      },
      success: function(data) {
        alert(data);
        $(".footer-msg-box").html(data);
        $("#user_submit_button").html("Submit");
      }
    });
    return false;
  });
});

Примечание: все работает отлично безАякс.Но когда я пытаюсь отправить с ajax. Это показывает Undefined User.Большое спасибо, если любая помощь от Anybudy.

1 Ответ

0 голосов
/ 06 февраля 2019

Имена в вашей форме похожи на name="data[User][first_name]", но у вас нет свойств data или User в опции data: в AJAX.Должно быть:

data: {
    data: {
        User: {
            first_name: first_name,
            last_name: last_name,
            mobile: mobile
        }
    }
}

Избавьтесь от опций processData: false и contentType: false.Их следует использовать только при отправке объекта FormData в качестве опции data:.processData: false не позволяет $.ajax преобразовать объект data: в строку в коде URL в данных POST.

Кажется, что для async: false также нет никаких причин.Синхронный AJAX, как правило, плохая идея, и она устарела.

...