我使用了一些修改后的函数,它在几个教程中重复使用,或者在某些论坛中用于回答。JQuery.getJSON和使用返回的数据
问题是,在通话功能之后,什么也没有发生。我调试它,并且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);
}
View是小通心粉代码,但结果是这样的:
<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>
那是你的实际代码?因为它看起来像你有一个额外的行,那将是一个JavaScript错误,或至少结束你的功能比你想要的。 – tvanfosson 2011-04-05 14:24:14
对不起,我做了一些复制粘贴后的外观变化,我检查了它 – Zdenek 2011-04-05 14:26:02
您是否尝试过使用FireBug调试Firefox并在getJSON回调中设置断点以查看返回的数据?或IE开发人员工具,但我发现FF/FB更易于使用。 – tvanfosson 2011-04-05 14:29:08