我是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 –