我试图将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获取请求/调用......?我只是不确定最好的方法是让这一切都有效,所以如果有人能指出我正确的方向,那将是值得赞赏的!
答案 0 :(得分:0)
我建议你用Javascript解决这个挑战。我不确定您在前端代码中使用了哪些库,但使用jQuery AJAX工具可以帮助您轻松使用ROR API。
制作一个小型包装&#34;或者SDK与API通信,这样您就可以将应用程序逻辑与从API获取数据所需的接口分离。
window.API = window.API || {};
API.getModels = function(models) {
var url = "http://runbikestop.com/api/v1/cars/models?callback=?";
return $.getJSON( "url", models );
};
&#13;
此SDK将帮助您以非常实用和可维护的方式获取API数据,如:
var models = { makes : ["ALFA ROMEO", "NISSAN"] };
API.getModels(models).done(function(modelsJSON) { // handle the API JSON here });