2015-08-21 44 views
0

我的代碼有問題。真的不知道什麼是錯的。Laravel路線不適用於js

該路線應該顯示來自輸入的令牌數據,但提交按鈕只是加載並沒有任何反應。因此,隨着檢查元素 - 令牌生成。 這裏是路線:

Route::get('buy', function(){ 
    return View('pages.add_creditcard'); 
}); 

Route::post('buy', function(){ 
dd(Input::all()); 
}); 

這裏查看(刀片):

{!! Form::open(['id' => 'billing-form', 'url' => '/buy', 'method' => 'post']) !!} 
卡號: CVC: 截止日期: {! Form :: selectMonth(null,null,['data-stripe'=>'exp-month'])!!} {!!形式:: selectRange(NULL,日期( 'Y'),日期( 'Y')+ 10,空,[ '數據條紋'=> 'EXP-年'])!}

{!!表::提交( '立即購買',[ '身份證'=> '提交'])!}

{!! Form::close() !!} 

這裏是js文件:

(function() { 

var StripeBilling = { 
    init: function() { 
     this.form = $('#billing-form'); 
     this.submitButton = this.form.find('input[type=submit]'); 
     this.submitButtonValue = this.submitButton.val(); 

     var stripeKey = $('meta[name="publishable-key"]').attr('content'); 

     Stripe.setPublishableKey(stripeKey); 

     this.bindEvents(); 
    }, 

    bindEvents: function() { 
     this.form.on('submit', $.proxy(this.sendToken, this)); 
    }, 

    sendToken: function(event) { 
     this.submitButton.val('One Moment...').prop('disabled', true); 

     Stripe.createToken(this.form, $.proxy(this.stripeResponseHandler, this)); 


     event.preventDefault(); 
    }, 

    stripeResponseHandler: function(status, response) { 

     if(response.error) { 
      this.form.find('.payment-errors').show().text(response.error.message); 
      return this.submitButton.prop('disabled', false).val(this.submitButtonValue); 
     } 


     $('<input>', { 
      type: 'hidden', 
      name: 'stripeToken', 
      value: response.id 

     }).appendTo(this.form); 

     //this.form[0].submit(); 


    } 

}; 

StripeBilling.init(); 

})();

此表單完全正常工作,但POST方法什麼都不做。也許JS是問題?

+0

當我改變this.form = $( '#計費形式')以this.form = $( '計費形式')POST工作。它會生成一個令牌並將其顯示在帖子頁 – codddeerz

+0

通過stripe.js,信用卡信息不會觸及服務器,您將獲得一個令牌。 – mdamia

+0

是的!但是當我添加信用卡並點擊提交按鈕時,它正在加載並創建令牌。我可以在檢查元素上看到隱藏元素。但爲什麼這條路線::發佈不工作? – codddeerz

回答

1

Stripe.js創建令牌,但您仍然必須創建一個Ajax調用您的後購買。試試這個

if(response.error) { 
}else 
{ 
    var token = response.id; 
    var last4 = response.card['last4']; 
    var stripeId = response.card['id']; 
    $.post('/stripe/account/proccess_payment', { 
    stripeToken : token, 
    last_four : last4, 
    stripe_id : stripeId 
    }).done(function(data){ 
     // your code here 
    }); 
}