当用户在国家/地区下拉列表中选择国家/地区时,我正在尝试填写州下拉列表。我正在使用json。现在,我得到错误respose - [object XMLHttpRequest]。
我花了很多时间来解决这个问题。请不要发布或提供更多新方法,因为我已经遵循了很多方法。所以,请告诉我以下代码是否有任何问题。
提前致谢
我的观看代码是
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Name) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Name) %>
<%: Html.ValidationMessageFor(model => model.Name) %>
</div>
<div class="editor-label">Country</div>
<div class="editor-field">
<%: Html.DropDownList("country", ViewData["countries"] as SelectList, "Select Contry")%>
</div>
<div class="editor-label">State</div>
<div class="editor-field">
<select id="state"></select>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
<script type="text/javascript" src="../../Scripts/jquery-1.4.1.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#country").change(function () {
if ($("#country").val() != "") {
$.ajax({
url: 'http://localhost:52970/State/GetState',
data: { Sel_Country: $("#country").val() },
cache: false,
type: "POST",
success: function (data) {
alert(data.length);
var markup = "<option value='0'>Select City</option>";
for (var x = 0; x < data.length; x++) {
markup += "<option value=" + data[x].Value + ">" + data[x].Text + "</option>";
}
$("#state").html(markup).show();
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
});
});
我的GetState方法:
public JsonResult GetState(string Sel_Country)
{
//stateRepository db = new CountryService();
JsonResult result = new JsonResult();
var vStateList=stateRepository.GetStateByCountryId(Convert.ToInt32(Sel_Country));
result.Data = vStateList;
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result;
}
答案 0 :(得分:0)
经过大量搜索后,我发现问题出在GetState操作方法中。问题实际上是循环引用。这个link将更多地讲述这个问题。我实际创建了一个名为StateList的新类,并使GetState方法调用StateList类而不是常规的State模型类。
谢谢大家。