-1

これは、dbをクエリし、Jsonファイル/オブジェクトを提供する私のASPWebサービスです。

<!--#include file="JSON_2.0.4.asp"-->
<!--#include file="JSON_UTIL_0.1.1.asp"-->
<%
Response.CodePage = 28591 
Response.CharSet = "ISO-8859-1"

'response.write("ç ã â é À á") -> characters are written correctly with or without the two lines above but not the json feed

Set Connection = Server.CreateObject("ADODB.Connection")
Set Recordset = Server.CreateObject("ADODB.Recordset")  
Connection.Open "Provider=sqloledb;SERVER=localhost;DATABASE=DB;UID=user;PWD=PASS;" 
QueryToJSON(Connection,"select field1, field2, field3, field4, FROM table").flush
%>

応答テキスト:

[{"col1": "value1"、 "col2": "value1"、 "col3": "value1"}、{"col1": "value2"、 "col2": "value2"、 "col3": "value2 "}、{" col1 ":" value3 "、" col2 ":" value3 "、" col3 ":" value3 "}]

応答jsonは適切にエンコードされておらず、句読点「\ u00E9」を置き換え、値の中央と最後に多くのスペースを追加しています。このファイルをブラウザで直接開くと、置き換えられた文字を除いて問題ないように見えますが、xmlhttp.responseTextとしてIndexedDBにフィードすると、console.logに多くのスペースと改行が表示され、「 DataError:オペレーションに提供されたデータが要件を満たしていません。」エラー。スペースと改行は、この「\n」のような置き換えられた文字が原因である可能性があると思います

アップデート:

"xhr.setRequestHeader( "Content-Type", "application/json", "Charset=ISO-8859-1");"ajaxリクエストで使用しようとしましたが、機能しません

4

1 に答える 1

0

ちょうどそれを理解しました!DBへのクエリは、プログラムの実行中に何らかの形でインクリメントされていた、最後にスペースがあるフィールドを取得していました。クエリ行を次のように変更しただけです。

 QueryToJSON(Connection,"select rtrim(field1) field1, rtrim(field2) field2, rtrim(field3) field3, rtrim(field4) field4 FROM table").flush

これで、応答はクリーンになり、正しい文字セットをすでに受け入れています。

于 2012-09-27T14:21:17.240 に答える