首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在成功后从jQuery中调用rails方法(函数(Json))?

如何在成功后从jQuery中调用rails方法(函数(Json))?
EN

Stack Overflow用户
提问于 2016-07-29 07:28:40
回答 1查看 63关注 0票数 0

我有一份有数据的表格:

代码语言:javascript
复制
<div class="container">
    <div class="row-fluid">
      <%= form_tag class: "form-horizontal" id: "payment-form" %>
        <%= hidden_field "card_registration_url", card_preregistration['CardRegistrationURL'] %>
        <%= hidden_field "preregistration_data", card_preregistration['PreregistrationData'] %>
        <%= hidden_field "access_key", card_preregistration['AccessKey'] %>
        <%= hidden_field "id_card", card_preregistration['Id'] %>

        <fieldset>
          <div id="legend">
            <legend class="">Deposit for contract <%= @contract.title %></legend>
          </div>

          <div id="legend">
            <legend class="">Amount <%= @contract.amount %></legend>
          </div>

          <!-- Name -->
          <div class="control-group">
            <%= label "card_holder", "Card Holder's Name", class:"control-label" %>
            <div class="controls">
              <%= text_field_tag "card_holder", { id: "username", class: "input-xlarge"} %>
            </div>
          </div>

          <!-- Card Number -->
          <div class="control-group">
            <%= label "card_number", "Card number", class:"control-label" %>
            <div class="controls">
              <%= text_field_tag "card_number", { id: "card_number", class: "input-xlarge"} %>
            </div>
          </div>

          <!-- Expiry-->
          <div class="control-group">
            <%= label "expity_date", "Card Expiry Date", class:"control-label" %>
            <div class="controls">
              <%= text_field_tag "card_expiration_date", { id: "card_expiration_date", class: "input-xlarge"} %>
            </div>
          </div>

          <!-- CVV -->
          <div class="control-group">
            <%= label "cvv", "Card CVV", class:"control-label" %>
            <div class="controls">
              <input type="password" id="card_cvx" name="password_confirm" placeholder="" class="span2">
              <%= text_field_tag "card_expiration_date", { id: "card_expiration_date", class: "input-xlarge"} %>
            </div>
          </div>

          <!-- Save card -->
          <div class="control-group">
            <div class="controls">
               <label class="checkbox" for="save_card">
                 <%= label "save_card", class:"check_box" %>
                <input type="checkbox" id="save_card" value="option1">
                Save card on file?
              </label>
            </div>
          </div>

          <!-- Submit -->
          <div class="control-group">
            <div class="controls">
              <%= button_tag "Pay now", remote: true, class: "btn btn-success" id="process" %>
            </div>
          </div>

        </fieldset>
      <% end %>
    </div>

</div>

我通过post方法将数据从表单发送到服务器支付系统(在我的示例中是hidden_field "card_registration_url")

register_card.js

代码语言:javascript
复制
$('#process').click(function(){
  var valuesToSubmit = $('#payment-form').serialize();
  console.log(valueToSubmit);
  $.ajax({
    url: $('#mail-form').attr('action'), //sumbits it to the given url of the form
    data: valuesToSubmit['card_registration_url'],
    dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
  }).success(function(json){
    //act on result.
  });
  return false; // prevents normal behaviour
});

如果服务器的响应都很好,则需要调用action payments_controller/create才能完成付款。

我如何调用action _controller/create?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-29 07:49:35

要调用创建操作,您需要一个post方法,并且您已经遵循了rails命名约定,这应该可以帮助您,

/payments post请求将您带到支付控制器中的create操作。

所以,您可以进行ajax调用,

代码语言:javascript
复制
$.ajax({
      type: "POST",
      url: "/payments"
});

$('#process').click(function(){
  var valuesToSubmit = $('#payment-form').serialize();
  console.log(valueToSubmit);
  $.ajax({
    url: $('#mail-form').attr('action'), //sumbits it to the given url of the form
    data: valuesToSubmit['card_registration_url'],
    dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
  }).success(function(json){
    $.ajax({
      type: "POST",
      url: "/payments"
    });
  });
  return false; // prevents normal behaviour
});

如果要通过params发送数据,也可以从它发送数据属性,

代码语言:javascript
复制
$.ajax({
      type: "POST",
      data: valuesToSubmit['card_registration_url'],  // you can send your own data
      url: "/payments"
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38652952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档