【问题标题】:External webservice call using jquery使用 jquery 的外部 Web 服务调用
【发布时间】:2013-07-02 00:53:57
【问题描述】:

我在一个应用程序中创建了一个 Web 服务。现在我需要在另一个网站中使用它。我知道如果 Web 服务在同一个应用程序中,例如提供像“webservicename.asmx/getInventoryForWs”这样的 url,它可以如何完成使用jQuery。 我的 jquery 调用代码是

     $.ajax({
            type: "POST",
            url: "http://localhost/DashboardUI/Reports/Marketing/AUSUWs.asmx/getInventoryForWs",
            contentType: "application/json; charset="utf-8",
            dataType: "jsonp",
            success: function (ret) {
                alert('success');
            },
            error: function (httpRequest, textStatus, errorThrown) {
                alert("status=" + textStatus + ",error=" + errorThrown);
            }
        });    

这是我的 vb.net 网络服务代码

Imports System.Web
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.Web.Script.Services

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the       
following line.
<System.Web.Script.Services.ScriptService()> _
<WebService(Namespace:="http://microsoft.com/webservices/")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class AUSUWs
Inherits System.Web.Services.WebService

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function getInventoryForWs() As String
    Try
        Dim a As New AUSUReport
        Dim dt As DataTable = a.getInventoryForWs().Tables(0)
        Return (GetJson(dt))
    Catch ex As Exception
        Throw ex
    End Try
End Function
Public Function GetJson(ByVal dt As DataTable) As String
    Dim serializer As New System.Web.Script.Serialization.JavaScriptSerializer()
    Dim rows As New List(Of Dictionary(Of String, Object))()
    Dim row As Dictionary(Of String, Object) = Nothing

    For Each dr As DataRow In dt.Rows
        row = New Dictionary(Of String, Object)()
        For Each col As DataColumn In dt.Columns
            row.Add(col.ColumnName.Trim(), dr(col))
        Next
        rows.Add(row)
    Next
    Return serializer.Serialize(rows)
End Function
End Class

谁能帮我解决这个问题?

【问题讨论】:

  • 在跨域请求AFAIK中使用JSONP
  • 如果你不介意可以给我一个例子吗?我是新手。提前谢谢
  • 通过this JSONP 示例
  • 就 url 而言,上面的代码没有任何问题。
  • 老兄,但我总是遇到错误..我没有从该 Web 服务获取数据。

标签: asp.net web-services jquery web asmx


【解决方案1】:

我认为这部分与双斜杠不正确:

 url: "http://somewebsite.com//
       DashboardUI/Reports/Marketing/AUSUWs.asmx/getInventoryForWs", 

试试这个:

 url: "http://somewebsite.com/
       DashboardUI/Reports/Marketing/AUSUWs.asmx/getInventoryForWs", 

编辑:

"dataType 应该是你收到的类型,但是 contentType 应该是你发送的 mime-type,下面的应该没问题"

JQuery.ajax({ 
    type: "POST", 
    url: "http://somewebsite.com/DashboardUI/Reports/Marketing/AUSUWs.asmx/getInventoryForWs",       
    dataType: "json", 
    success: function (ret) { 
              $(ret).find("Table").each(function () 
               { 
                   alert('success'); 
                   // $('#').val($(this).find('').text());
                });
        },
        error: function (httpRequest, textStatus, errorThrown) {
            alert("status=" + textStatus + ",error=" + errorThrown);
        }
    });

这是一个详细的演练。像这里一样做所有事情,你不会有问题: Introduction to using jQuery with Web Services (VB.Net)

【讨论】:

  • 您将 xml 格式的数据发布到服务中,然后您得到 json 格式的响应?
  • 是的,我需要从我的外部网络服务加载一些数据。你有什么解决方案吗?
  • 顺便说一下data默认是复数所以没有“datas”这样的词
  • 你能从萤火虫那里得到更详细的例外吗? getfirebug.com/errors
  • 我试过你的代码,但问题仍然存在 $.ajax({ type: "POST", url: "localhost/DashboardUI/Reports/Marketing/…", contentType: "application/xml; charset=utf-8" , dataType: "json", 成功: 函数 (ret) { alert('success'); }, 错误: 函数 (httpRequest, textStatus, errorThrown) { alert("status=" + textStatus + ",error=" + errorThrown ); } });
猜你喜欢
  • 2012-06-06
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-04-09
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
相关资源
最近更新 更多