2015-10-26 2 views
1

Пожалуйста, смотрите код ниже:объект не поддерживает это свойство или метод с использованием AJAX

$.ajax({ 
    type: "POST", 
    url: "Results1.aspx/TableQuery", 
    data: JSON.stringify({ 
     mappingid: res[i], 
     strCon: $("#fieldGenieConnectionString")[0].value, 
     strTypeSession: $("#fieldTypeSession")[0].value 
    }), 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    success: OnSuccess(i, res.length), 
    error: OnError, 
    failure: function (response) { 
     alert('there was a failure loading the webpage') 
    } 
}); 

и код ниже:

function OnSuccess(i, totalrows) { 
    return function (response) { 
     //if (response.d != "") { 
     var strResponse = response.d; 
     strResponse = strResponse.toUpperCase; 
     if (strResponse.indexOf("<TR>") > 0) { 
      // alert(response.d); 
      document.getElementById('div' + i).innerHTML = document.getElementById('div' + i).innerHTML + '<br>' + '<br>' + response.d; 
     } 
     numSucceeded++; 
     var completeCalculation = (numSucceeded/totalrows) * 100 
     var rounded = completeCalculation.toFixed(0); 
     document.getElementById('ProgressIndicator').innerHTML = rounded + ' % complete'; 
     document.getElementById('ProgressIndicator2').innerHTML = rounded + ' % complete'; 
     if (numSucceeded === totalrows) { 
      var end = new Date().getTime(); 
      var htmlResponse = "Loaded after: " + (end - start)/1000 + " seconds" 
      document.getElementById('TotalTimeLabel').innerHTML = htmlResponse; 
      document.getElementById('TotalTime2Label').innerHTML = htmlResponse; 
      $("#LoadingImage").hide(); 
      $("#LoadingImage2").hide(); 
     } 
    } 
} 

Следующая строка вызывает ошибку:

if (strResponse.indexOf("<TR>") > 0) { 

ответ

4
strResponse = strResponse.toUpperCase; 

Опечатка здесь. Я думаю, что вы хотите написать strResponse = strResponse.toUpperCase();

Вы назначаете функцию strResponse вместо вызова toUpperCase() на существующем strResponse

+1

Да, это он. Без круглых скобок он вернет указатель на функцию, и это определенно не имеет метода 'indexOf'! Хорошо заметили, мы все пропустили это – Jamiec

+0

@Tushar. Да свойство length функций представляет количество аргументов, которые он ожидает (с именами аргументов). То есть '(function (a, b, c) {}). Length === 3' –

+0

Спасибо. Я в первую очередь использую vb.net, поэтому я использую немного ленивый, оставляя круглые скобки. – w0051977