Я пытаюсь связать форму HTML / PHP с сайта WordPress для связи с внешней базой данных (которая построена с использованием Ruby on Rails, я считаю). Мне сказали, что эта БД имеет полностью рабочий 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"
Другой разработчик не рекомендовал использовать вызовы API JavaScript и вместо этого предложил HTTP получать запросы / вызовы …? Я просто не уверен, что лучшим способом было бы заставить все это работать, поэтому, если кто-то может указать мне правильное направление, это будет оценено!
Я предлагаю вам решить эту проблему с помощью Javascript. Я не уверен, какие библиотеки вы используете в своем коде переднего плана, но использование средств jQuery AJAX поможет вам с легкостью потреблять ROR API.
Создайте небольшую «оболочку» или 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 );
};
Других решений пока нет …