Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MVC ASp.Net中将JSON转换为Jquery数组_Jquery_Json_Asp.net Mvc - Fatal编程技术网

如何在MVC ASp.Net中将JSON转换为Jquery数组

如何在MVC ASp.Net中将JSON转换为Jquery数组,jquery,json,asp.net-mvc,Jquery,Json,Asp.net Mvc,很抱歉问了这么长时间。我只是想弄清楚我在问什么 我的控制器中有一个JSON结果,如下所示:- public JsonResult Top7Video() { db.Configuration.ProxyCreationEnabled = false; var result = (from v in db.TblVideos orderby v.FileName s

很抱歉问了这么长时间。我只是想弄清楚我在问什么

我的控制器中有一个JSON结果,如下所示:-

 public JsonResult Top7Video() 
    {
        db.Configuration.ProxyCreationEnabled = false;
        var result = (from v in db.TblVideos
                      orderby v.FileName
                       select new { title= v.FileName, artist=v.Artist,Image=v.Image,ID=v.ID}).Take(7).ToList();

        return Json(result,JsonRequestBehavior.AllowGet);
    }
在我的Razor视图中,我希望它是一个JQuery数组。我尝试了以下方法:-


var myarray='{“title”:“3.Ellie Goulding”,“artist”:“mp4”:“~/video/Ellie Goulding.mp4”,“ogv”:“~/video/Ellie Goulding.ogv”,“webmv”:“~/video/Ellie Goulding.webm”,“poster”:“~/video/VideoImg/play1.png”}”;
//var myarray='{“Err0”:“名称中只允许字母和空格”}”;
//警报(myarray);
$(函数(){
$.ajax({
键入:“获取”,
url:“/Home/Top7Video”,
数据:“{}”,
数据类型:“Json”,
成功:功能(数据){
$。每个(arr,函数(索引,值){
myarray.push([',{“title”:“+value.FileName+”,“artist”:“+value.Artists+”,“mp4”:“~/video/'+value.FileName+”,“ogv”:“~/video/'+value.FileName+”,“webmv”:“~/video/'+value.FileName+”,“poster”:“~/video/VideoImg/'+value.Image+”));
});
}
});
});
var arr=$.parseJSON(myarray)//转换为javascript数组
警报(arr);
$(函数(){
$.ajax({
键入:“获取”,
url:“/Home/Top7Video”,
数据类型:“Json”,
成功:功能(数据){
$.each(数据、函数(索引、值){
$('dropdownVideo')。追加('li>');
});
}
});
});
$(文档).ready(函数(){
新的jPlayerPlaylist({
jPlayer:#jquery_jPlayer_1“,
CSS选择器存储:“jp容器1”
},
啊,,
{
swfPath:“../../dist/jplayer”,
提供:“webmv、ogv、mp4”,
useStateClassSkin:对,
汽车司机:错,
smoothPlayBar:没错,
keydenabled:true
});
});
以下是我的HTML:-

玩
00:00
00:30
以前的
玩
下一个
哑的
最大容量
全屏
1.埃莉·古尔丁
需要更新 要播放媒体,您需要将浏览器更新为最新版本,或更新浏览器。
添加这些行

myarray = JSON.parse(myarray);
myarray = [myarray];
在这条线下

var myarray = '{"title": "3. Ellie-Goulding","artist": "","mp4": "~/video/Ellie-Goulding.mp4","ogv": "~/video/Ellie-Goulding.ogv","webmv": "~/video/Ellie-Goulding.webm","poster": "~/video/VideoImg/play1.png"}';

myarray是一个字符串。您不能推送字符串。

正如其他人在评论中提到的,下面的行不是数组

 var myarray = '{"title": "3. Ellie-Goulding","artist": "","mp4": "~/video/Ellie-Goulding.mp4","ogv": "~/video/Ellie-Goulding.ogv","webmv": "~/video/Ellie-Goulding.webm","poster": "~/video/VideoImg/play1.png"}';
但是一个字符串变量!您不能对其调用
push
方法。因此,首先要做的是将其设置为一个适当的数组。您的操作方法返回集合中的json数据。因此,只需使用$each循环它。并根据需要从每个项创建一个新的js对象,然后推送到数组中

var myarray =[]; // empty array
// If you want to have some default items, you can push here
myArray.push( { title : "Jon", artist:"Help"});

$(function () {
        $.ajax({
            type: "GET",
            url: "/Home/Top7Video"
            success: function (data) {
                $.each(arr, function (index, value) {
                    var item = { title:  value.FileName , 
                                 artist: value.Artists
                                 //to do : Add other properties here as well
                               };
                   //Now you can push this new item to the array
                   myarray.push(item);
                });
            }
        });
});

同样,如注释中提到的史蒂芬,您可以考虑从动作方法本身发送具有转换值的数组,而不是在JavaScript中执行字符串连接。p>


我还看到您正在进行两个调用,一个用于填充数组,另一个用于向下拉列表中添加项。既然您得到的是相同的数据,为什么不在同一个ajax调用的成功回调中同时执行这两个操作呢?

myarray
是字符串,而不是数组。也许你想用括号代替引号,数据已经是一个数组了。如果您想要这些属性名(
title
artist
等),请修改控制器以发送具有这些属性名的匿名对象集合-
选择新的{title=v.FileName,…。}
@David使用[]代替“”也没有帮助。我收到了相同的错误消息和警报(arr);我得到了[object][object]@StephenMuecke我用你的su编辑了我上面的问题