【问题标题】:Ajax does not run the Web API url on client side in Asp.netAjax 不在 Asp.net 的客户端运行 Web API url
【发布时间】:2014-03-18 07:42:06
【问题描述】:

我已经使用 Web 角色在云服务中编写了 API。这个 api 工作正常(通过邮递员、.net Webclient 等检查)。但它不仅仅通过客户端的 Ajax 调用工作。

               var car = { minlat: '11', minlong: '45', maxlat: '-44', maxlong:'130', locationlevel: 'city' };

            $.ajax({
                async: true,
                type: "POST",
                contentType:"application/x-www-form-urlencoded; charset=utf-8",
                url: "url",
                data: JSON.stringify(car), 
               // dataType: "json",
                success: function (data) {
                    var obj = data.d;
                    if (obj == 'true') {

                    }
                },
                error: function (result) {
                    alert("Error");
                }
            });

谁能解释一下跨域会影响ajax调用吗?我正在调用云服务的 API。并在本地主机服务器中进行测试。

【问题讨论】:

  • 你的contentType 应该是application/json 并且也使用dataType: "json"
  • 感谢您的回复。我也已经尝试过您的解决方案。我的网址是服务器端网址并在本地主机中工作。这有什么问题吗?
  • 像 Fiddler2 (www.telerik.com/fiddler) 这样的工具在处理请求时说什么?服务器是否有响应?您可以在 Fiddler 中查看从云服务返回的所有内容(可能包括任何错误)。

标签: jquery ajax asp.net-web-api


【解决方案1】:

由于您使用的是 JSON,因此您可以将 dataType: json 添加到您的 AJAX 调用中。

【讨论】:

    【解决方案2】:

    您应该设置期望返回的数据类型。正如 Felix 告诉你的,你应该使用

    datatype: "JSON"
    

    另外,如果你返回的 json 字符串是一个 json 数组,那么成功函数应该是这样的:

    success: function (data) {
        var obj = data[0].d;
        if (obj == 'true') {
    
        }
    }
    

    【讨论】:

      【解决方案3】:

      尝试传递数据而不对它们进行字符串化

      var car = { minlat: '11', minlong: '45', maxlat: '-44', maxlong:'130', locationlevel: 'city' };
      
                  $.ajax({
                      async: true,
                      type: "POST",
                      contentType:"application/json; charset=utf-8",
                      url: "url",
                      data: car, 
                      dataType: "json",
                      success: function (data) {
                          var obj = data.d;
                          if (obj == 'true') {
      
                          }
                      },
                      error: function (result) {
                          alert("Error");
                      }
                  });
      

      【讨论】:

      • 嗨,Nps,是的,我也尝试过这种方式。然后只有我尝试过这种方式。任何人都可以解释跨域会影响ajax调用。我是调用云服务的 API。并在本地主机服务器中进行测试。
      • 它是否返回 JSON 响应?我最近在 MVC 网站上遇到了类似的问题。我用 Json(data) 方法返回 JsonResult 。但它没有调用 API,但无法以 JSON 格式发送响应。在这种情况下,无论是 Success 还是 error 都不会被调用。当我更改代码并替换 Json(data, JsonRequestBehavior.AllowGet) 时。它开始工作了。
      • 就我而言,总是调用失败。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-12
      • 2012-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多