我是Rails和AJAX的新手。 我想要使用託管在其他網站上的API。我遇到了跨源HTTP請求的問題。所以我試圖通過使用HTTParty來做到這一點。Rails - 通過AJAX的HTTParty請求
在下面的代碼,我設置的$文本(「結果」)作爲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(佔位符),但得到的響應表明它不是有效的查詢。
然而,如果我通過了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 –