Я новичок в Rails и AJAX. Я хочу использовать API, который размещен на другом веб-сайте. Я столкнулся с проблемами с HTTP-запросом Cross-Orig. Поэтому я попытался сделать это, используя HTTParty.Rails - HTTPARTY-запрос через AJAX
В приведенном ниже коде я устанавливаю текст $ (". Result") как запрос JSON.parse (HTTParty()), чтобы он мог запросить веб-сайт и дать мне результат.
Rails код:
<%= form_for(@profile) do |f| %>
<%= f.label :content %>
<%= f.text_field :content, class: 'ajax-control' %>
<%= f.submit "Save changes", class: "btn btn-primary" %>
<% end %>
<p class="result"></p>
код Javascript:
<script>
$(document).ready(function(){
$('.ajax-control').on('keyup',function(){
var charCount = $(this).val().length;
if(charCount===3){
var str1='<%=JSON.parse(HTTParty.get("http://example.com/api.php?param='+$(this).val()+'"))%>'
$(".result").text(str1);
}
});
});
</script>
Сейчас идет странные проблемы. Вышеприведенный код отправляет запрос GET на example.com (placeholder), но получает ответ, в котором говорится, что это неверный запрос.
Однако, если я прохожу str1 следующим образом -
var str1='<%=JSON.parse(HTTParty.get("http://example.com/api.php?param=xyz"))%>'
$(".result").text(str1);
я получаю ожидаемый ответ. Если текстовое поле $ (". Ajax-control") является «xyz», я получаю ответ, говорящий недействительным запросом.
Содержит ли строка конкатенация в javascript новые символы, из-за которых она выдает ошибку?
Спасибо! Я, наконец, понимаю, почему возникла проблема. Причина, по которой я не использовал CORS, заключалась в том, что сервер, с которого хосты API не поддерживает его. Есть ли другой способ? –
@ArjunBharadwaj, если вы не можете использовать CORS, тогда ваш следующий лучший вариант - использовать собственный сервер для передачи этого HTTP-запроса, поэтому сделайте запрос на ваш сервер, который вызывает запрос example.com и передает его обратно на ваш AJAX –