2013-08-10 2 views
0

자동 완성을위한 official example에 이어이 문제를 해결했습니다. jquery autocomplete throws -> "parsererror", SyntaxError : invalid label

$("#search").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "/search", 
        dataType: "jsonp", 
        data: { 
         featureClass: "P", 
         style: "full", 
         maxRows: 12, 
         name_startsWith: request.term 
        }, 
        success: function (data) { 
         response($.map(data.username, function (item) { 
          return { 
           label: item.name, 
           value: item.name 
          }; 
         })); 
        }, 
        error: function (data) { 

        } 
       }); 
      }, 
      minLength: 2, 
      select: function (event, ui) { 

      }, 

     }); 

그러나 나는 success: function (data) { .. }하지만 항상 error: function (data) {에 충돌하지 않습니다. "parsererror", SyntaxError: invalid label

enter image description here

/search URL이 서버 측에 생성합니다 :

def search(): 
    data = None 
    if 'name_startsWith' in request.args: 
     q = request.args['name_startsWith'] 
     data = User.query(ndb.AND(User.firstname >= q, User.firstname <= q + u'\ufffd')).fetch(12) 
     js = [] 
     for user in data: 
      js.append({'name' : user.fullname()})   
    return jsonify(username=js) 

어떤 제안하십시오

방화범 오류를 보여줍니다?

+0

내 의심스러운 사용자 이름에'''와 같은 잘못된 문자가 포함되어 있습니다. 거기에있는 문자 세트를 공유 할 수 있습니까? –

+0

. {{ "username": "Kave Kory"}]}'나는 아무것도 보지 않습니다. 거기에 – Houman

+0

귀하의 데이터 유형은 jsonp라고하지만 그것은 json입니다 응답, 데이터 유형을 'json'으로 변경하십시오. –

답변

1

변화 json에 데이터 유형 응답이 JSON 객체이고

$("#search").autocomplete({ 
      source: function (request, response) { 
       $.ajax({ 
        url: "/search", 
        dataType: "json", 
        data: { 
         featureClass: "P", 
         style: "full", 
         maxRows: 12, 
         name_startsWith: request.term 
        }, 
        success: function (data) { 
         response($.map(data.username, function (item) { 
          return { 
           label: item.name, 
           value: item.name 
          }; 
         })); 
        }, 
        error: function (data) { 

        } 
       }); 
      }, 
      minLength: 2, 
      select: function (event, ui) { 

      }, 

     }); 

데모 JSONP를위한 필요가 없습니다 있도록 요청이 동일한 도메인에 전송되기 때문에 : Error 데모 : Solution

+0

+1 감사합니다. 그것은 작동합니다. 그러나 당신의 대답에 다시'jsdonp' ;-)가 있습니다. – Houman