2017-03-03 9 views
1

PrestaShopのTools :: isSubmit()メソッドが正しい名前で入力を待つため、jqueryで.submit()を使用してフォームを送信しようとしましたが機能しません。ここでPrestashopフォームsubmit jquery Ajax

は私のHTMLフォームです:

<form onsubmit="" action="{$link->getModuleLink('jmarketplace', 'addproduct', array(), true)|escape:'html':'UTF-8'}" method="post" class="std" enctype="multipart/form-data"> 

PHP:

If (Tools::isSubmit('submitAddProduct')) { 
     //d($_POST); 
     // my stuff 
} 

だから、唯一のボタンでその作業:

<button type="submit" name="submitAddProduct"> 

私はjQueryを使って、このフォームを送信したいですまたはajax呼び出し。 ajaxを使ってみましたが、これは試しましたが機能していないので、Tools :: isSubmit( 'submitAddProduct')が真のparamを待っていると思います。

ですisSubmit方法Toolsクラスの:そのPARAMが掲載されているかどうかを編集する必要がありますので

$(document).ready(function() { 
    var form = $('.std'); 
    form.submit(function(e) { 
     $.ajax({ 
      type: 'POST', 
      url: baseDir + 'module/jmarketplace/addproduct', 
      data : { 
      //required parameters 
       ajax: 1 , 
       action : 'submitAddProduct', 
      }, 
     }); 
     //e.preventDefault(); 
    }); 
}); 

答えて

0

Tools::isSubmit()をチェックし、:ここで

public static function isSubmit($submit) 
{ 
    return (
     isset($_POST[$submit]) || isset($_POST[$submit.'_x']) ||  isset($_POST[$submit.'_y']) 
     || isset($_GET[$submit]) || isset($_GET[$submit.'_x']) || isset($_GET[$submit.'_y']) 
    ); 
} 

私のAJAX呼び出しとjsのコードがありますあなたのjsコードは次のようになります:

$(document).ready(function() { 
    var form = $('.std'); 
    form.submit(function(e) { 
     $.ajax({ 
      type: 'POST', 
      url: baseDir + 'module/jmarketplace/addproduct', 
      data : { 
      //required parameters 
       ajax: 1 , 
       action : 'submitAddProduct', 
       submitAddProduct : true // or 1 
      }, 
     }); 
    //e.preventDefault(); 
    }); 
}); 

しかし、イベントをボタンにバインドすることをお勧めします。

<form> 
    ... 
    <button id="submitmyform" type="button">Send</button> 
    ... 
</form> 

とJS:たとえば

  • Adding Javascript code to specific pages using Prestashop Module
  • Add token to ajax call
  • $(document).ready(function() { 
        $(document).on('click', '#submitbutton', function(e){ 
         e.preventDefault(); 
         $.ajax({ 
          type: 'POST', 
          url: baseDir + 'module/jmarketplace/addproduct', 
          data : { 
          //required parameters 
           ajax: 1 , 
           action : 'submitAddProduct', 
           submitAddProduct : true // or 1 
          }, 
          dataType: 'json', 
          success : function(json){ 
           // check the page response 
           console.log(json); 
          }; 
         }); 
        }); 
    }); 
    

    またあなたのために非常に有効になります。この前の答えをお読みください

+0

ちょうど試してみて、フォームのようなページのリロードは送信されるつもりですが、空のフィールドがあればそれはちょうどリフレッシュですか? – psppro26

+0

あなたは 'e.preventDefault()'スニペットをコメントしたので、 – sarcom