自动填充表单使用HTTP GET从外部API中选择字段

时间:2015-02-10 05:19:01

标签: php ruby-on-rails wordpress forms get

我试图将WordPress网站上的HTML / PHP表单与外部数据库(我相信使用Ruby on Rails构建)进行通信。我被告知这个DB有一个完全可用的API。

完整表单有一些其他标准文本字段等,但为了给出基本概述,用户可以在' make_field'中选择汽车品牌。下面。然后,这将与数据库的API通信,以填写下一个选择' inquest_model' (然后根据它,会有另一个电话填充“inquest_year”字段)。

<form accept-charset="UTF-8" action="http://runbikestop.com/inquests" class="new_inquest" id="new_inquest" method="post">

      <div class="field" id="make_field">
         <label for="inquest_make">Make <span class="please-wait">please wait</span></label>
         <select id="inquest_make" name="inquest[make]"><option value="">Please select</option>
           <option value="ABARTH">ABARTH</option>
           <option value="ALFA ROMEO">ALFA ROMEO</option>
           <option value="AUDI">AUDI</option>
           <!--(there are 100 or so more options here...)-->
        </select>
       </div>

       <div class="field">
         <label for="inquest_make">Model <span class="please-wait">please wait</span></label>
         <select id="inquest_model" name="inquest[model]">
           <option> </option>
         </select>
       </div>

       <div class="field" id="year_field">
          <label for="inquest_make">Year <span class="please-wait">please wait</span></label>
          <select id="inquest_year" name="inquest[year]">
           <option> </option>
         </select>
       </div>

        <input id="inquest_gclid_code" name="inquest[gclid_code]" type="hidden" />
        <input id="inquest_webpage_url" name="inquest[webpage_url]" type="hidden" />

       <div class="actions">
         <input name="commit" type="submit" value="Submit" />
       </div>
</form>

我建立数据库的ruby开发人员告诉我,以下是需要进行的命令行测试查询类型,以使动态下拉列表工作:

curl -i -H "Accept: application/json"  http://runbikestop.com/api/v1/cars/models?makes=ALFA+ROMEO 
curl -i -H "Accept: application/json" "http://runbikestop.com/api/v1/cars/car_years?makes=ALFA+ROMEO&models=156"

其他开发者建议不要使用javascript API调用,而是建议HTTP获取请求/调用......?我只是不确定最好的方法是让这一切都有效,所以如果有人能指出我正确的方向,那将是值得赞赏的!

1 个答案:

答案 0 :(得分:0)

我建议你用Javascript解决这个挑战。我不确定您在前端代码中使用了哪些库,但使用jQuery AJAX工具可以帮助您轻松使用ROR API。

制作一个小型包装&#34;或者SDK与API通信,这样您就可以将应用程序逻辑与从API获取数据所需的接口分离。

&#13;
&#13;
window.API = window.API || {};

API.getModels = function(models) {
  var url = "http://runbikestop.com/api/v1/cars/models?callback=?";
  return $.getJSON( "url", models );
};
&#13;
&#13;
&#13;

此SDK将帮助您以非常实用和可维护的方式获取API数据,如:

var models = { makes : ["ALFA ROMEO", "NISSAN"] };
API.getModels(models).done(function(modelsJSON) { // handle the API JSON here });