我希望将Json结果加载到javascript变量中。那么如何将json结果url或Controller动作加载到javascript变量中呢。
我使用javascript自动建议输入字段中的值。
当我将静态数据与变量一起使用时,以下代码有效。但是,当我通过网址或控制器操作时,它无法正常工作。
脚本
<script>
$(function () {
var CorporateNameSearch = [
"ActionScript",
"AppleScript",
"Asp",
"BASIC",
"C",
"C++",
"Java",
"JavaScript",
"Lisp",
"Perl",
"PHP",
"Python",
"Ruby",
"Scheme"
];
$("#tags").autocomplete({
source: CorporateNameSearch
});
});
查看页面
<div class="form-group">
<label class="col-sm-2 control-label" for="tags">Some value:</label>
<div class="col-sm-9">
<input type="text" id="tags" name="tags" class="form-control" />
</div>
</div>
控制器,返回JSON结果
public ActionResult JsonData()
{
int ProviderID = 100;
string ProfileUrl = "http://localhost:64423/api/CorporateName/CorporateDetails?pid=" + ProviderID + "";
System.Net.Http.HttpClient DashBoardclient = new System.Net.Http.HttpClient();
DashBoardclient.BaseAddress = new Uri(ProfileUrl);
DashBoardclient.DefaultRequestHeaders.Accept.Clear();
DashBoardclient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage dashboardresponseMessage = DashBoardclient.GetAsync(ProfileUrl).Result;
var DashboardData = dashboardresponseMessage.Content.ReadAsStringAsync().Result;
return Json(DashboardData, JsonRequestBehavior.AllowGet);
}
脚本我试图加载json结果
var myjson;
$.getJSON("http://localhost:49359/ConfirmVisit/JsonData", function (json) {
myjson = json;
});
$("#tags").autocomplete({
source: myjson
});
那么,我怎样才能将json结果或控制器动作的url传递到java脚本变量中以在我的视图页面中自动建议?
任何帮助表示赞赏。在此先感谢!!!
答案 0 :(得分:0)
使用myjson = JSON.parse(myjson)
。
这会将JSON文本转换为javascript对象,可以在js代码中使用。
答案 1 :(得分:0)
因为getJSON
调用是异步的!
使用当前代码,它将尝试对JsonData操作方法进行ajax调用,但是您正在使用myjson
变量注册自动完成功能。如果服务器需要10秒钟才能返回响应怎么办?您正在更新成功回调中的myjson
(当服务器响应到来时),但您已使用autocomplete
变量的原始值调用(注册)myjson
!
处理ajax调用时,请确保在从服务器收到ajax调用后使用响应/数据。大多数ajax方法都有成功的回调方法,这些方法将在从服务器调用收到响应后执行。
在成功回调中从ajax调用中获得结果时注册自动完成。
$(function () {
$.getJSON("@Url.Action("JsonData")", function (json) {
$("#tags").autocomplete({
source: json
});
});
})