ajaxを使用してデータを取得する際に問題があります。私のテストでは、私が望むものを返していますが、IISでサーバーにプロジェクトを公開すると、自分のページのHTMLコードが返され、 "構文エラー:予期しないトークン<がJSONの位置0として返されます。誰でも助けてくれますか?ほんとうにありがとう。以下は感謝:)構文エラー:予期しないトークン<JSONの位置0として
私のコードです:
Controller:
[HttpGet]
public ActionResult getregion(string zname)
{
SelectList list = RegionList(zname);
var serializedData = JsonConvert.SerializeObject(list, Formatting.Indented,
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore
});
return Json(list, JsonRequestBehavior.AllowGet);
}
上記のコードは、JSON形式で地域の一覧を返します。
public SelectList RegionList(string zname)
{
CustomerModel cust = new CustomerModel();
List<SelectListItem> regionname = new List<SelectListItem>();
try
{
dt1.Clear();
MySqlConnection mycon = new MySqlConnection(conn.getconnections("mysql"));
mycon.Open();
if (zname == null || zname == "")
{
cmdsql = mycon.CreateCommand(); cmdsql.CommandText = "SELECT regionname FROM tbl_region WHERE STATUS=1 group by regionname order by regionname asc";
}
else
{
cmdsql = mycon.CreateCommand(); cmdsql.CommandText = string.Format("SELECT regionname FROM tbl_region WHERE STATUS=1 and zonecode='{0}' group by regionname order by regionname asc", getzonecode(zname));
}
drsql = cmdsql.ExecuteReader();
try
{
if (drsql.HasRows)
{
regionname.Add(new SelectListItem { Text = "- Select -", Value = "", Selected = true });
regionname.Add(new SelectListItem { Text = "All Region", Value = "AllRegion" });
while (drsql.Read())
{
regionname.Add(new SelectListItem { Text = drsql["regionname"].ToString().ToUpper().Trim(), Value = drsql["regionname"].ToString().ToUpper().Trim() });
}
}
}
catch (Exception ex) { cust.WriteToFile(ex.ToString()); return null; }
}
catch (Exception ex) { cust.WriteToFile(ex.ToString()); }
return new SelectList(regionname, "Value", "Text");
}
このメソッドは、領域のリストを取得する際に呼び出されます。
JAVASCRIPT:
$(function() {
$('#zoneitem').change(function() {
var item = $('#zoneitem').val();
var region = $("#regionitem");
region.empty();
if (item != "") {
$("#reportsitem").val($("#reportsitem option:first").val());
}
$.ajax({
type: "GET",
url: "Home/getregion",
contentType: "application/json; charset=utf-8",
data: { zname: item },
cache: false,
dataType: "json",
success: function (result) {
for (var i = 0; i < result.length; i++) {
region.append('<option value="' + result[i].Value.trim() + '">' + result[i].Text.trim() + '</option>');
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
これは私が返された結果が自分のWebページのhtml形式にあったこれをデバッグするとき、私の_reference.jsコードです。してください、誰もこの問題で私を助けることができます。私はすでにそれを研究してみましたが、それと同じ問題です。
apiからあなたの応答にいくつかのhtml文字があるようです..変数に警告または通知が含まれているかどうかを確認し、すべてのhtml文字を取り除き、JSON.parse(データ)を使用して応答を解析します。 – axcl
ネットワーク・タブを開き、応答ペイロードを確認します。 –