我使用了一些修改过的函数,在几个教程中重复使用,或者像某些论坛中的回答一样使用。
问题是,在通话功能之后,什么都没有。我调试它,JavaScript函数调用正确,Controller也正确调用,但我不知道,dropdownlist没有更新。似乎问题出现在嵌入jQuery.getJSON的函数中,但我不知道如何调试和检查它,或者如何检查数据是否真正从服务器发送或客户端捕获。
JavaScript的:
function ConnectedEndPoint(href, SwitchId) {
jQuery.ajaxSetup({ cache: false });
var id = jQuery(href).attr('id');
var index = '_' + id.split('_')[1] + '_' + id.split('_')[2];
jQuery.getJSON('/ActiveItem/Switches/ConnectedEndPoint/Switch/' + SwitchId, function (data) {
var items = "<OPTION>---------------------</OPTION>";
jQuery.each(data, function (i, _switch) {
items += "<OPTION value='" + _switch.Value + "'>" + _switch.Text + "</OPTION>";
});
jQuery("#item_City" + index).html(items);
});
};
控制器:
class mySwitchBoard
{
public string Text { get; set; }
public string Value { get; set; }
}
public JsonResult ConnectedEndPoint(string locality, int id)
{
IRepository<Switch> _SwitchRepository = new Repository<Switch>();
Switch _Switch = _SwitchRepository.Get(id);
IList<mySwitchBoard> mySB = new List<mySwitchBoard>();
foreach (SwitchBoard sb in _Switch.Location.ServerRoom.SwitchBoards)
{
mySB.Add(new mySwitchBoard() { Text = sb.Name, Value = sb.Id.ToString() });
}
Repository).GetAllInServerRoom(2);
return Json(mySB);
}
查看是小spagetti代码,但结果是这样的:
<button name="itemUp_0_0" onclick="ConnectedEndPoint(this, 123)" type="button">Up</button><br>
<select id="item_City_0_0" name="item_City_0_0"></select>
答案 0 :(得分:1)
我相信你对getJSon的调用失败了,因为你试图用它检索的数据是不可序列化的。我知道IList不是,但你的mySwitchBoard应该是。尝试将IList更改为仅列表。
以下代码应该有助于调试
$.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
}});
答案 1 :(得分:0)
问题在于控制器:
...
JsonResult jr = Json(mySB, JsonRequestBehavior.AllowGet);
...
JsonRequestBehavior未设置为AllowGet