Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 this.state.search_results.map不是函数,但它是';这是一个数组_Javascript_Arrays_Reactjs_Javascript Objects - Fatal编程技术网

Javascript this.state.search_results.map不是函数,但它是';这是一个数组

Javascript this.state.search_results.map不是函数,但它是';这是一个数组,javascript,arrays,reactjs,javascript-objects,Javascript,Arrays,Reactjs,Javascript Objects,console.log打印: [{“id”:“testGroup2”},{“id”:“testGroup77777”},{“id”:“testGroup1”},{“id”:“testGroup3”}] 数据通过以下方式获得: render: function(){ console.log(this.state.search_results); var renderedSearchResults = this.state.search_results.map((result) => { 通

console.log打印:

[{“id”:“testGroup2”},{“id”:“testGroup77777”},{“id”:“testGroup1”},{“id”:“testGroup3”}]

数据通过以下方式获得:

render: function(){
console.log(this.state.search_results);
var renderedSearchResults = this.state.search_results.map((result) => {
通过:

$.ajax({
        url: this.props.routes.search,
        contentType: 'application/json',
        type: 'POST',
        data: JSON.stringify(searchObj),
        success: function(data){
            console.log(data);
            this.setState({search_results:data});
        }.bind(this),
        error: function(xhr, status,err){
            console.error("/api/response", status, err.toString());
        }.bind(this)
        });```
我真的很困惑,这个.state.search\u results不是一个我可以迭代的数组,有人能看到发生了什么吗

我试过使用
console.log(Object.prototype.toString.call(data))在成功函数中,我得到:

def post(self):
    """
    Makes a request to search for a specific
    searchtype: Group
    searchstring: ""
    requestedfields: []
    """
    search_type = self.json_data.get('searchtype', 'Group')
    search_string = self.json_data.get('searchstring', '')
    requestedfields = self.json_data.get('requestedfields', ['id'])
    search_model = {
        'Group': Group(),
        'User': User()
    }[search_type]
    search_fields = {
        'Group': ['id', 'tags'],
        'User': ['username']
    }[search_type]
    # check if requestedfields contains valid fields
    for field in requestedfields:
        if field == 'id':
            continue
        value = search_model.default().get(field, None)
        if value is None:
            return self.set_status(400, "Model {0} does not have requested field {1}".format(search_type, field))
    try:
        search_results = search_model.search_items(search_string, search_fields, requestedfields)
    except err:
        return self.set_status(400, "Something went wrong")
    self.set_status(200, "Success")
    return self.write(tornado.escape.json_encode(search_results))

找到我的答案,没有在我的ajax请求中设置数据类型:“json”。

在执行ajax请求时,尝试以显式方式设置
json
数据类型:

[object String]

最有可能的是,jQuery用来检测数据类型的
Intelligent Guess
给出了错误的结果。

尝试使用JSON.parse(data),看看会得到什么。@jamesemanon我发现了,我在ajax请求中没有指定数据类型
$.ajax({
  dataType: 'json',
  //...
});