2016-05-12 3 views
0

я встретил большой одну проблему с JQuery автозаполнения с источником .asmx файл вот мой код:Ajax JQuery автозаполнения получить данные из ASMX

есть метод C# или что-то (что код не моя, просто для вас, чтобы посмотреть)

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] //Specify return format. 
    public string GetQuestionsByWord(string Word) 
    { 
     //JavaScriptSerializer YourSerializer = new JavaScriptSerializer(); 
     //return YourSerializer.Serialize(FAQsCOL); 


     Dictionary<string, string> FAQsCOL = clsFAQBLL.GetFAQCOLByWordInQuestionAnswer(Word); 
     //Dictionary<string, string> ReturnLinks = FAQsCOL.ToDictionary(m => string.Format("{0}?{1}={2}", clsParameters.clsPages.ENTERPRISE_PORTAL_FAQs, clsParameters.clsQueryString.FAQ_ID, m.Key), m => m.Value); 
     return JsonConvert.SerializeObject(FAQsCOL); 
    } 

    [WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)] //Specify return format. 

    public string GetQuestionByQuestionId(int FAQId) 
    { 
     Linq.General.FAQ CurrentFAQ = clsFAQBLL.GetFAQByFAQId(FAQId); 
     FAQ FAQ = new FAQ(); 
     if (CurrentFAQ != null) 
     { 
      FAQ = new FAQ(CurrentFAQ.Question, CurrentFAQ.Answer); 
     } 
     return JsonConvert.SerializeObject(FAQ); 
    } 

после всех этих я получаю в консоли (поиск «2»): jquery-2.1.4.min.js:2 Uncaught TypeError: Cannot use 'in' operator to search for 'length' in {"5":"שאלה - 17","11":"מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?","20":"מהו נוהל הזכאות לגשת לבחינות התמחות?"}

Я попытался вывести данные в массив (поиск «1»), вот и выглядит: d : "{"2":"שאלה 2","3":"שאלה 2","4":"שאלה 2","11":"מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?","20":"מהו נוהל הזכאות לגשת לבחינות התמחות?"}"

Может ли кто-нибудь мне помочь? Я потерял много времени для этого больного вещь не могу понять это ошибка или что-то в WebService или в моей функции Jquery

+0

Что 'console.log (data.d)' дать вам успеха метод? И вы должны использовать '' {"Word": "'+ $ (' # enterprise_search '). Val() +'"} ''. Кроме того, убедитесь, что '$ ('# enterprise_search'). Val()' не содержит каких-либо фанковых символов, таких как '{', которые испортят запрос. – Chintan

+0

@Chintan ваша вещь не работает, она возвращает ошибку 500 (внутренняя ошибка сервера) 'console.log (data.d)' on succes (поиск «1») - '{" 2 ":" שאלה 2 ", «3»: «שאלה 2», «4»: «שאלה 2», «11»: «מהו הנוהל לגבי מתמחה אשר מנהלו מסרב לחתום על טופס ההרשמה לבחינה?», «20»: «מהו נוהל הזכאות לגשת לבחינות התמחות? "}' Возможно ли, что иврит испортил данные, которые я получил? посмотрите на первый - ''2': 'something': '11'' – scDisorder

ответ

0

И снова через пару часов ум ** нг дает мне ответ один:

var searchValue = JSON.stringify($('#enterprise_search').val());

data: {Word:searchValue},

success: function (datas) { 
      console.log('Data recieved: ' + datas.d); 
      var data = JSON.parse(datas.d); 
      $.each(data, function (index, value) { 
       $('#search-results').append('p' + index + ': ' + value + '</p>'); 
      }); 
     } 

надежда помогает кому-то, потому что я не самый лучший в этом деле, но должно быть;)

0

Заменить

data: "Word="+$('#enterprise_search').val(), 

с

data: {"Word": $('#enterprise_search').val() }, 
+0

теперь' get 'или' post 'returns' 500 (Internal Server Error) ':( – scDisorder

Смежные вопросы