【问题标题】:REST Web Service client with jQuery带有 jQ​​uery 的 REST Web 服务客户端
【发布时间】:2016-01-27 13:49:25
【问题描述】:

我发布了我的第一个问题,因为我在尝试使用 jQuery 调用 REST Web 服务时遇到了这个问题。 这是我的代码:

<script>
    $("#selListSub").change(function() {
        var listid = $("#selListSub option:selected").val();
        $.ajax({
            type : "GET",
            beforeSend : function() {
                headers = {
                    'Authorization' : 'myKey'
                };
            },
            url : "https://api.createsend.com/api/v3.1/lists/" + listid + "/customfields.json",
            success : function(data) {
                alert("success");               
            }
        });
    })
</script>

我检索在我的

我寻找并尝试了我在此站点上找到的所有解决方案,但没有任何效果。我已经在 Postman 上测试了带有 Auth 标头的 url,它工作正常。

Web 服务应该返回一个 json 对象,但我想要实现的第一件事是达到成功功能......

我不知道它是否有帮助,但这相当于我想在 java/jersey 中做的事情(这有效):

String idList = request.getParameter("selListSub");
Client client = ClientBuilder.newClient();
WebTarget resourceTarget = client.target("https://api.createsend.com/api/v3.1/lists/" + idList + "/customfields.json");
String jsonInString = resourceTarget.request(MediaType.APPLICATION_JSON_TYPE).header("Authorization", "myKey").get(String.class);

如果有人看到我的错误在哪里,请告诉我; )

问候。

【问题讨论】:

  • 您是否收到身份验证错误或其他响应?您是否在 chrome 开发工具网络选项卡中检查了请求和/或请求的响应?请求应该与您在邮递员中提供的请求相匹配,如果不是,您应该在那里有一个线索。
  • @IsmailS 我不认为这是一个身份验证问题,因为我在我的 java 程序中使用了这个 api,它工作正常。我正在使用这个: String jsonInStringDelete=target.request(MediaType.APPLICATION_JSON_TYPE).header("Authorization","myKey").post(Entity.entity(stringaddfieldtojson, MediaType.APPLICATION_JSON_TYPE), String.class);问题是我必须使用 ajax 来解决我的问题,所以我必须找到如何在 jQuery 中做同样的事情。
  • 由于您似乎对 jQuery 了解很多,并且您在我粘贴的代码中没有看到重大错误,我想我的应用程序中还有其他错误...
  • 您是否尝试在 chrome 开发工具或 firebug 的网络选项卡中查看请求详细信息(取决于您使用的内容)?
  • 我现在正在尝试,但不知道从我正在阅读的内容中推断出什么,一切似乎都很好......

标签: jquery web-services rest


【解决方案1】:

你可能不想改变如下 beforeSend 函数

<script>
    $("#selListSub").change(function() {
        var listid = $("#selListSub option:selected").val();
        $.ajax({
            type : "GET",
            beforeSend : function(xhr) {
                xhr.setRequestHeader("Authorization", 'myKey');
            },
            url : "https://api.createsend.com/api/v3.1/lists/" + listid + "/customfields.json",
            success : function(data) {
                alert("success");               
            }
        });
    })
</script>

更新
您可能还想在 beforeSend 函数中执行以下操作

  xhr.setRequestHeader("Accept", "application/json");
  xhr.setRequestHeader("Content-Type", "application/json");

【讨论】:

  • 感谢您的回复,我之前尝试过您的 synthaxe,但通话也没有成功。我保留了你的合成器,我仍在尝试解决我的问题。
  • 我想知道我是否可以在控制台中收到消息错误,所以我添加了这个:error: function(e) {console.log(e);},但我没有看到控制台中的任何消息,是否有可能该函数既没有传递成功路径,也没有传递错误路径?
  • 对不起,我错过了在beforeSend 函数中指定xhr 参数。现在更正了。您可能想再试一次。
猜你喜欢
  • 1970-01-01
  • 2012-02-13
  • 2011-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
相关资源
最近更新 更多