Ajax POST только исключает php-скрипт при обновлении страницы - PullRequest
1 голос
/ 07 октября 2019

У меня есть элемент canvas для сбора подписи пользователей, затем у меня есть кнопка с функцией onclick для сохранения подписи на сервере, которая запускает сценарий ajax для POST-данных в файл php. У меня проблема в том, что, хотя данные сохраняются, мне нужно нажать кнопку и затем обновить страницу, чтобы событие сохранения произошло. Пожалуйста, помогите мне увидеть, где я ошибся, поскольку мне не нужно делать обновление вручную. Код ниже.

HTML-элемент Canvas:

  <div class="signature-pad--body">
     <canvas id="signCanvas"></canvas>
  </div>
  <div class="signature-pad--footer">
     <div class="description">Sign above</div>
         <div class="signature-pad--actions">
              <div>
                <button type="button" class="button clear" data-action="clear">Clear</button>
                <button type="button" class="button" data-action="undo">Undo</button>
              </div>
              <div>
              <input type="button" class="button save" onclick="signUploader()" id="signReady" value="Upload above Signature" />
              </div> 
          </div>
        </div>
     </div>

JS Ajax-скрипт:

 <script type="text/javascript"> 
   function signUploader() {
   // Generate the image data

   var pic = canvas.toDataURL('image/png');
   pic = "data="+pic;
   console.log(pic); //just for seeing that it's working
      $.ajax({
          url: "includes/signSave.php",
          type: "POST",
          contentType: "application/x-www-form-urlencoded; charset=UTF-8",
          dataType: "text", 
          data: pic ,                   
          beforeSend : function() {
            $("#signCanvas").fadeOut(); }
      });
    }
 </script>

signSave.php

 <?php

   $img = $_POST['data'];
   $img = str_replace('data:image/png;base64,', '', $img);
   $img = str_replace(' ', '+', $img);
   $fileData = base64_decode($img);
   $file = '../../uploads/signature' . time() . '.png';
   file_put_contents($file, $fileData);
?>

ThisЯ впервые играю с ajax, поэтому, пожалуйста, помогите мне и объясните, есть ли там ошибки. Спасибо

Ответы [ 2 ]

2 голосов
/ 07 октября 2019

Я думаю, вы должны вернуть true с signSave.php, и в случае успеха вы можете перезагрузить страницу, как показано ниже.

 'success' : function(data) {              
                window.location.reload();
            }
1 голос
/ 07 октября 2019

добавить

location.reload ();

, чтобы обновить страницу после вашего ajax, поскольку вы ничего не возвращаете в ajax

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...