jsonオブジェクトを返すためにajaxを使用するこのjqueryがありますが、私はjsonオブジェクトを返すために使用していますが、jsonファイルをロードしていて、情報をデータベースに照会するcshtmlページ(私がここでやっているように)。 (; contentTypeのように、それは何の動作を変更しません。また、私が試してみました "のcharset = UTF-8のアプリケーション/ JSON")
$.ajax({
url: "/AJAX Pages/Compute_Calendar_Events.cshtml",
async: true,
type: "GET",
dataType: "json",
contentType: "application/json",
success: function (jsonObj) {
console.log("AJAX SUCCESS!");
},
error: function (jqXHR, textStatus, error) {
alert("NO AJAX!");
}
});
:ここ
はjQueryのです。物事のカップルを注意することが非常に重要である
@{
Layout = "";
if(IsAjax || 1==1)
{
string jsonString = "{\"events\":[";
string selectQueryString = "SELECT title, summary, eventDate FROM CalendarEvents ORDER BY eventDate ASC";
var db = Database.Open("Content");
foreach (var row in db.Query(selectQueryString))
{
jsonString += "{";
jsonString += "\"title\":" + Json.Encode(row.title) + ",";
jsonString += "\"dateNumber\":" + Json.Encode(row.eventDate.ToString().Substring(0, row.eventDate.ToString().IndexOf("/"))) + ",";
jsonString += "\"dateMonth\":" + Json.Encode(row.eventDate.ToString().Substring(row.eventDate.ToString().IndexOf("/") + 1, row.eventDate.ToString().LastIndexOf("/") - (row.eventDate.ToString().IndexOf("/") + 1))) + ",";
jsonString += "\"dateYear\":" + Json.Encode(row.eventDate.ToString().Substring(row.eventDate.ToString().LastIndexOf("/") + 1, 4)) + ",";
jsonString += "\"summary\":" + Json.Encode(row.summary);
jsonString += "},";
}
jsonString = jsonString.TrimEnd(',');
jsonString += "]}";
/*System.IO.File.Delete(Server.MapPath("~/TEST.txt"));
var outputFile = System.IO.File.AppendText(Server.MapPath("~/TEST.txt"));
outputFile.Write(jsonString);
outputFile.Close();*/
@* *@@jsonString
}
else
{
Response.Redirect("~/");
}
}
:
- 私は、サーバー側のエラーを取得していない。ここ
は、私はAJAXを指すCSHTMLページですまたはエラーコード。
- 出力を簡単な.txtファイルに書き込んで内容をテストし、それをjsonLintに貼り付けることで(これはhttp://jsonlint.com/にあります)、これは本当に有効なjson構文であると簡単に判断できました。
- 私はまだ、$ .ajax呼び出しの "error:function()"オプションの下でのみ実行される警告メッセージを受け取ります。
- jsonString全体の前または後に空白が表示されません(おそらく重要ではない)。
- 私はWebMatrix、C#、asp.net-webpages環境にあります。
- 私は変更しなければならなかった私の唯一の2疑惑が1です)のdataTypeおよび/またはのcontentTypeが正しく設定されていない、または2)私はJSONのためにAJAXを使用していた最後の時間()は、実際の.jsonファイルをターゲットに"IIS Express"でjsonファイルからデータを受け取れるように設定しましたが、jsonのデータだけでなく、jsonの "ファイル"を解析するために実際にajaxを使用する必要があると思いました。また、私がどこを見ても、私はこのリソースをもう見つけられないようです。
- textStatusとエラーパラメータ値は以下のとおりです。textStatus:parsererrorエラー:にSyntaxError:予期しないトークン&が、これは私が自分自身によるJSONの構文は大丈夫チェックアウトすることを知っているので、私の心の中で任意の赤い旗を投げていないようです。
ご協力いただきありがとうございます。私はこの問題を発見したと信じている(予期しないアンパサンドトークンが最終的に電球を私の頭の中に入れた)。私はこのページへの回答を追加しました。それは将来他の人に役立つかもしれない場合です。私がチェックするもう一つは、あなたのJSONということであるWebMatrixの
で.cshtml
ファイル @{
Response.AddHeader("Content-Type","application/json");
}
の上部にヘッダーを見出してそれを解決してきた私は、同様の問題、
を持っていた
エラーは、サーバーではなくブラウザでエラーが発生したことを示します。 – Barmar
'contentType'は内容がないので' type: "GET" 'とは無関係です(' contentType'はフォームの値を参照し、 'dataType'はレスポンスを参照します)。 – Barmar
Json.Writeを使用してJSONを生成する必要があります。 'Json.Write(db.Query(selectQueryString)、Response.Output)' –