无法解析来自jquery Ajax Call的JSON响应(Unable to parse JSON response from jquery Ajax Call)
我对jquery / ajax比较陌生,而且我很难从一个非常简单的JSON ajax调用中解析结果。 这是我的代码 。 此示例中有2个测试URL:注释的URL按预期工作,但未注释的URL不符合(根据jslint,它们都是格式正确的JSON)。 知道为什么会抛出一个解析错误,另一个不会(它们都是第三方域)?
先谢谢你!
function getNews2() { $.ajax({ //url: "http://api.ihackernews.com/page?format=jsonp", url: "http://recs.coremetrics.com/iorequest/restapi?cm_cid=90232642&cm_zoneid=Mobile&cm_targetid=FULO-0101", dataType: "jsonp", success: function(data, textStatus, xhr) { alert("SUCCESS recsStatus=" + textStatus); alert(JSON.stringify(data)); }, error: function(data, textStatus, errorThrown) { alert("FAILURE recsStatus=" + textStatus); alert(JSON.stringify(data)); } }); } getNews2();
I'm relatively new to jquery/ajax, and I'm having trouble parsing the results from a very simple JSON ajax call. Here's my code. There are 2 test URLs in this example: the commented URL works as expected, but the uncommented URL does not (they are both properly formatted JSON, according to jslint). Any idea why one would throw a parse error, and the other would not (they are both 3rd party domains)?
Thank you in advance!
function getNews2() { $.ajax({ //url: "http://api.ihackernews.com/page?format=jsonp", url: "http://recs.coremetrics.com/iorequest/restapi?cm_cid=90232642&cm_zoneid=Mobile&cm_targetid=FULO-0101", dataType: "jsonp", success: function(data, textStatus, xhr) { alert("SUCCESS recsStatus=" + textStatus); alert(JSON.stringify(data)); }, error: function(data, textStatus, errorThrown) { alert("FAILURE recsStatus=" + textStatus); alert(JSON.stringify(data)); } }); } getNews2();
原文:https://stackoverflow.com/questions/8855048
更新时间:2023-09-13 16:09
最满意答案
测试表和数据:
DECLARE @t table(id int identity(1,1), col1 varchar(max)) insert @t values ('item'+char(1)+ 'value1'+char(1)+'value4'+char(1)+char(0)+ 'item'+char(1)+'value1'+char(1)+ 'value2'+char(1)+char(0)), ('item'+char(1)+ 'value1'+char(1)+'value2'+char(1)+char(0)+ 'item2'+char(1)+'value1'+char(1)+ 'value2'+char(1)+char(0))
查询:
;WITH SplitByRow as ( SELECT id, t.c.value('.', 'VARCHAR(2000)') colx FROM ( SELECT id, x = CAST('<t>' + REPLACE(REPLACE(col1, char(1), '!new row!'), char(0), '</t><t>') + '</t>' AS XML) FROM @t ) a CROSS APPLY x.nodes('/t') t(c) ), SplitByColumn as ( SELECT id, (row_number() over (order by (select 1))+2)/3 rowx, (row_number() over (order by (select 1))+2)%3 colx, t.c.value('.', 'VARCHAR(2000)') value FROM ( SELECT id, x = CAST('<t>' + REPLACE(colx, '!new row!', '</t><t>') + '</t>' AS XML) FROM SplitByRow ) a CROSS APPLY x.nodes('/t') t(c) WHERE t.c.value('.', 'VARCHAR(2000)') <> '' ) SELECT id, [0] col1,[1] col2,[2] col3 FROM SplitByColumn INTO #temp PIVOT (min([value]) FOR colx in([0],[1],[2]) )AS p
结果:
SELECT * FROM #temp id col1 col2 col3 1 item value1 value4 1 item value1 value2 2 item value1 value2 2 item2 value1 value2
Test table and data:
DECLARE @t table(id int identity(1,1), col1 varchar(max)) insert @t values ('item'+char(1)+ 'value1'+char(1)+'value4'+char(1)+char(0)+ 'item'+char(1)+'value1'+char(1)+ 'value2'+char(1)+char(0)), ('item'+char(1)+ 'value1'+char(1)+'value2'+char(1)+char(0)+ 'item2'+char(1)+'value1'+char(1)+ 'value2'+char(1)+char(0))
Query:
;WITH SplitByRow as ( SELECT id, t.c.value('.', 'VARCHAR(2000)') colx FROM ( SELECT id, x = CAST('<t>' + REPLACE(REPLACE(col1, char(1), '!new row!'), char(0), '</t><t>') + '</t>' AS XML) FROM @t ) a CROSS APPLY x.nodes('/t') t(c) ), SplitByColumn as ( SELECT id, (row_number() over (order by (select 1))+2)/3 rowx, (row_number() over (order by (select 1))+2)%3 colx, t.c.value('.', 'VARCHAR(2000)') value FROM ( SELECT id, x = CAST('<t>' + REPLACE(colx, '!new row!', '</t><t>') + '</t>' AS XML) FROM SplitByRow ) a CROSS APPLY x.nodes('/t') t(c) WHERE t.c.value('.', 'VARCHAR(2000)') <> '' ) SELECT id, [0] col1,[1] col2,[2] col3 FROM SplitByColumn INTO #temp PIVOT (min([value]) FOR colx in([0],[1],[2]) )AS p
Result:
SELECT * FROM #temp id col1 col2 col3 1 item value1 value4 1 item value1 value2 2 item value1 value2 2 item2 value1 value2
相关问答
更多-
理论上,以下合并声明应该实现您的目标。 MERGE table1 [Target] USING table2 [Source] ON ([Target].[name] = [Source].[name] AND [Target].[bookname] = [Source].[bookname] AND [Target].[start_date] = [Source].[start_date] ...
-
在创建临时表中 ,您还需要指定列和数据类型。 临时表就像持久性表一样被创建。 但是,您可以使用Select Into语句,该语句将根据给定的Select语句自动创建表格。试试这个: USE MyDatabase GO IF OBJECT_ID('tempdb..#TempTable') Is Not null Drop Table #TempTable SELECT [Col A], [Col B], [Col C] INTO #TempTable -- <<<<< FROM MYLIST ...
-
在SQL Server中拆分行和列并插入临时表?(Split rows and columns in SQL server and insert into temporary table?)[2023-07-02]
测试表和数据: DECLARE @t table(id int identity(1,1), col1 varchar(max)) insert @t values ('item'+char(1)+ 'value1'+char(1)+'value4'+char(1)+char(0)+ 'item'+char(1)+'value1'+char(1)+ 'value2'+char(1)+char(0)), ('item'+char(1)+ 'value1'+char(1)+'value2'+char(1)+ch ... -
CREATE PROCEDURE dbo.FindProductTotal (@ProductID int) AS IF SELECT OBJECT_ID('tempdb..##productTable') IS NULL DROP TABLE ##productTable CREATE TABLE ##productTable(subProductID int, productCode varchar(10), productDesc varchar(25), chargeAmt ...
-
正确。 在编译时,该列不存在。 也就是说,SQL Server查看整个命令集并解析/编译它。 代码中的ALTER TABLE的效果对以后的命令不可见。 您必须分别对UPDATE执行ALTER TABLE 注意:对于SQL Server 2005,您将拥有varbinary(max),它更灵活,并且消除了一些复杂性 Correct. At the time of compilation, the column doesn't exist. That is, SQL Server looks at the wh ...
-
如何拆分字符串并将值插入到SQL Server中的表中(How to split string and insert values into table in SQL Server)[2022-02-18]
假设你的分割返回列名称项目 insert