Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.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

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
Javascript AJAX请求返回';对象对象';_Javascript_Jquery_Json_Ajax - Fatal编程技术网

Javascript AJAX请求返回';对象对象';

Javascript AJAX请求返回';对象对象';,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我一直在尝试并寻找解决方案,我有下面的脚本,但不幸的是,它返回object object var states = (function () { var states = null; $.ajax({ type: 'POST', 'async': false, 'global': false, 'url': "../home/GetAllTags", 'dataType': "json",

我一直在尝试并寻找解决方案,我有下面的脚本,但不幸的是,它返回
object object

var states = (function () {
  var states = null;            
  $.ajax({                
    type: 'POST',
    'async': false,
    'global': false,
    'url': "../home/GetAllTags",
    'dataType': "json",
    'success': function (data) {                    
      states = data;
    }
  });
  return states;
})();  
我知道我可以通过循环将其添加到字符串中,但我需要的是Json,而不是字符串。另外,我清楚地定义了输出是json
'dataType':“json”
,但我仍然不确定为什么会得到
对象

有什么想法吗

干杯

编辑:返回json的控制器

[HttpPost]
public JsonResult GetAllTags()
{
    List<Models.Tags.MTag> Tag_List = new List<Models.Tags.MTag>();
    Tag_List = GenerateList.Tags();
    var TAGS = Tag_List;
    return Json(TAGS.Select(t => new { id = t.Tag_id, val = t.Tag_name }), JsonRequestBehavior.AllowGet);
}
[HttpPost]
公共JsonResult GetAllTags()
{
List Tag_List=新列表();
Tag_List=GenerateList.Tags();
var TAGS=标签列表;
返回Json(TAGS.Select(t=>new{id=t.Tag\u id,val=t.Tag\u name}),JsonRequestBehavior.AllowGet);
}
编辑2-完整脚本

<script>

    $(function () {

        var substringMatcher = function (strs) {
            return function findMatches(q, cb) {
                var matches, substringRegex; 
                matches = [];
                substrRegex = new RegExp(q, 'i');
                $.each(strs, function (i, str) {
                    if (substrRegex.test(str)) {

                        matches.push({ value: str });
                    }
                });
                cb(matches);
            };
        };

        var states = (function () {
            var states = null;            
            $.ajax({                
                type: 'POST',
                //'async': false,
                'global': false,
                'url': "../my/GetAllTags",
                'dataType': "json",
                'success': function (data) {                    
                    states = data;
                }
            });
            return states;
        })();               

        alert(states);

        var tags = $('input.stateinput');
        tags.tagsinput();

        $(tags).each(function (i, o) {
            var taginput = $(o).tagsinput('input');
            taginput.typeahead({
                hint: true,
                highlight: true,
                minLength: 1,
                autoselect: true
            }, {
                    name: 'states',
                    displayKey: 'value',
                    source: substringMatcher(states)
                }).bind('typeahead:selected', $.proxy(function (obj, datum) {                   
                    $(o).tagsinput('add', datum.value);
                    taginput.typeahead('val', '');
                }));
            $(taginput).blur(function () {
                taginput.typeahead('val', '');
            });
        });

    });



</script>

$(函数(){
var substringMatcher=函数(strs){
返回函数findMatches(q,cb){
var匹配,substringRegex;
匹配项=[];
substregex=新的RegExp(q,‘i’);
$。每个(str,功能(i,str){
if(子相关性测试(str)){
匹配.push({value:str});
}
});
cb(比赛);
};
};
变量状态=(函数(){
var状态=空;
$.ajax({
键入:“POST”,
//“异步”:false,
“全局”:错误,
“url”:“./my/GetAllTags”,
“数据类型”:“json”,
“成功”:函数(数据){
状态=数据;
}
});
返回状态;
})();               
警报(国家);
var标记=$('input.stateinput');
tags.tagsinput();
$(标记)。每个(功能(i,o){
var taginput=$(o).tagsinput('input');
taginput.typeahead({
提示:没错,
推荐理由:没错,
最小长度:1,
自动选择:真
}, {
名称:“州”,
displayKey:'值',
来源:子字符串匹配器(状态)
}).bind('typeahead:selected',$.proxy(函数(obj,datum){
$(o).tagsinput('add',datum.value);
taginput.typeahead('val','');
}));
$(taginput).blur(函数(){
taginput.typeahead('val','');
});
});
});
结果


正如我在评论中所建议的,要转换:

[{"val":"tag1"},{"val":"tag2"},{"val":"testing"},{"val":"tes‌​t2"}]
致:

你可以用

map()
在调用数组中的每个元素上提供函数

var状态=[{
“val”:“tag1”
}, {
“val”:“tag2”
}, {
“val”:“测试”
}, {
“val”:“test2”
}];
var结果=states.map(函数(x){
返回x.val;
});

控制台日志(结果)
当您声明
数据类型:'json'
时,您期望的是数组或对象,就像您得到的一样。JSON是从服务器发送的字符串数据格式,也从不使用
async:false
。这是一种可怕的做法,不受欢迎。查看浏览器控制台中的警告您的更新对您的问题几乎没有任何补充@JaromandaX的问题“您如何使用状态?”实际上是唯一需要澄清的
alert(状态)将提示
状态。toString()
。。。由于
声明
是一个对象,{}.toString====[对象对象]。。。这就是你的答案。使用
console.log
进行调试,而不是
alert
。投票结束是一个打字错误
["tag1", "tag2","testing", "test2"]