Web服务未按预期返回json

时间:2013-11-03 22:46:12

标签: jquery json web-services

我有以下web服务,当通过asp.net“浏览器中的视图”进行测试时,确实检索了它在浏览器上以xml显示的数据

这是webservice

Imports System.Web
Imports System.Web.Services
Imports System.Web.Script.Services
Imports System
Imports System.IO
Imports Newtonsoft.Json
Imports System.Text

<ScriptService()> _
<WebService(Namespace:="BATLDataRetrieval")> _
<WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Public Class WebService
Inherits Services.WebService

    <WebMethod()> _
   <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Function GetOhlcvData(ByVal symbol As String) As List(Of StockPricesDTO)
    Dim tempList As New List(Of StockPricesDTO)
    Dim stockData As New ArrayList()

    Using ctx As New BATLEntities()
        Dim symid As Long = (From sym In ctx.last60dayssymbols Where symbol = sym.symbol Select sym.id).FirstOrDefault()
        Dim data = (From ohlcv In ctx.last60daysdata
                    Where ohlcv.lastSixty_symbolId = symid
                    Select ohlcv).ToList()

        For Each dataDay In data
            Dim tempSp As New StockPricesDTO
            tempSp.QuoteDate = DateTimeToUnixTimestamp(dataDay.date)
            tempSp.Open = dataDay.open
            tempSp.High = dataDay.high
            tempSp.Low = dataDay.low
            tempSp.LastSale = dataDay.last
            tempSp.Volume = dataDay.volume
            tempList.Add(tempSp)
        Next
        Return tempList
    End Using
End Function

我使用此服务从我们的数据库中检索stockdata以使用如下 我需要它以这种格式在json中返回数据

[[1162512000000,79.36,79.53,77.79,78.29,15426335],
[1162771200000,78.95,80.06,78.43,79.71,15525782],
[1162857600000,80.45,81.00,80.13,80.51,18788494]....]

每个提琴手返回的实际json是

{"d":   [{"__type":"StockPricesDTO","QuoteDate":1383282000000,"Open":1031.79,"High":1036.00,"Low":1025.10,"LastSale":1027.04,"Volume":1283300},{"__type":"StockPricesDTO","QuoteDate":1383195600000,"Open":1028.93,"High":1041.52,"Low":1023.97,"LastSale":1030.58,"Volume":1616400},{"__type":"StockPricesDTO","QuoteDate":1383109200000,"Open":1037.43,"High":1037.51,"Low":1026.00,"LastSale":1030.42,"Volume":1324100},

javascript代码

 $(function () {
        var symbol = "GOOG";  //will replace with <a> tag click value
        $.ajax({
            type: "POST",
            url: "WebService.asmx/GetOhlcvData",
            contentType: "application/json; charset=utf-8",
            data: '{symbol: "' + symbol + '"}',
            cache: false,
            dataType: "json",
            success: function (data) {
                alert(data.d);
                showChart(data.d);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                alert(textStatus + ' - ' + errorThrown);
            }
        });
        function showChart(chartData) {
            $('#chartContainer').highcharts('StockChart', {
                rangeSelector: {
                    selected: 1
                },
                title: {
                    text: symbol + ' Stock Price'
                },
                series: [{
                    name: symbol,
                    data: chartData,
                    tooltip: {
                        valueDecimals: 2
                    }
                }]
            });
        }
    });

alert(data.d)生成[object Object]而不是json中的实际数据。这是我第一次尝试创建一个返回json的服务,请原谅我的无知,如果这是一个简单的任务。

1 个答案:

答案 0 :(得分:0)

我试着替换

data: '{symbol: "' + symbol + '"}',

data: {symbol: symbol},

如果你

,你会看到更多(比使用alert()时)
  • 输出到控制台console.log(data)
  • 不要使用MSIE,而是使用Chrome,Firefox,...以及他们的Web-Developer utitilies
  • 查看Chrome Webinspector / Firefox Firebug的网络标签,并分析请求和响应

在控制台(或调试器)中,您可以检查服务器返回的内容,并告诉我们,如果您没有使用它。