2015-08-03 4 views
1

Я прочитал некоторые сообщения, связанные с этой проблемой, но, к сожалению, никакого решения не найдено для моего случаяJQuery Ajax: Uncaught TypeError: Не удается прочитать свойство «toLowerCase» неопределенной

я ударил ошибку jquery.min.js: 5 Uncaught TypeError: не удается прочитать свойство 'toLowerCase' неопределенной, когда я сделать следующий запрос JQuery Ajax

ajax_test.htm

<script src="common_test.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script> 
 
//String.prototype.trim = function(){return 
 
//(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))} 
 
$(document).ready(function() { 
 
\t formDownloadFile(); 
 
}); 
 

 
function formDownloadFile() { 
 
\t // jQuery ajax: 
 
\t alert("sending ajax..."); 
 
\t jQuery.ajax({ 
 
     type: 'POST', 
 
     url: 'ajax_test2.htm', 
 
\t \t dataType: "text", 
 
     data: {} 
 
\t }) 
 
    .done(function(data, textStatus, jqXHR) { \t // Succes 
 
\t \t console.log('done => data: ', data, ', textStatus: ', textStatus, ", jqXHR: ", jqXHR); 
 
    }) 
 
\t .fail(function(jqXHR, textStatus, errorThrown) { \t // fail 
 
\t \t console.error('fail => jqXHR: ', jqXHR, ', textStatus: ', textStatus, ", error: ", errorThrown); 
 
\t }) 
 
\t .always(function() { \t // 
 
\t \t 
 
\t }); 
 
\t 
 
\t alert("ajax sended"); 
 
} 
 
</script>

common_test.js: эта библиотека содержит много JavaScript функции, но я обнаружил, что моя проблема вызвана следующей функцией

... my stuffs ... 
 
String.prototype.trim = function(){return (this.replace(/^[\s\xA0]+/, 
 
    "").replace(/[\s\xA0]+$/, ""))}; 
 
... my others stuffs ...

ajax_test2.htm не имеют ничего !

когда я удалить вкл.доставка common_test.js из ajax_test.htm, у меня нет больше проблем! Я не понимаю, почему?

Большое спасибо наилучшими пожеланиями DSEA

+0

'common_test.js' должен иметь больше контента, чем это? – adeneo

+0

нет, все! – dsea

+0

Но в нем нет 'toLowerCase', поэтому он не может произвести эту ошибку – adeneo

ответ

0

В принципе, что вы пытаетесь сделать здесь, чтобы заменить строку в common_test.js для строчных букв и поэтому производят ошибки .. Один из способов решить эту проблему является:

String.prototype.trim = function(){return (this.replace(/^[\s\xA0]+/, 
    "").replace(/[\s\xA0]+$/, "").toLowerCase())}; 

Вам необходимо явно преобразовать строку в нижний регистр, вы делаете это, явно определяя toLowerCase();

<script src="common_test.js"></script> 
 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<script> 
 
String.prototype.trim = function(){return 
 
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "").toLowerCase())} 
 
$(document).ready(function() { 
 
\t formDownloadFile(); 
 
}); 
 

 
function formDownloadFile() { 
 
\t // jQuery ajax: 
 
\t alert("sending ajax..."); 
 
\t jQuery.ajax({ 
 
     type: 'POST', 
 
     url: 'ajax_test2.htm', 
 
\t \t dataType: "text", 
 
     data: {} 
 
\t }) 
 
    .done(function(data, textStatus, jqXHR) { \t // Succes 
 
\t \t console.log('done => data: ', data, ', textStatus: ', textStatus, ", jqXHR: ", jqXHR); 
 
    }) 
 
\t .fail(function(jqXHR, textStatus, errorThrown) { \t // fail 
 
\t \t console.error('fail => jqXHR: ', jqXHR, ', textStatus: ', textStatus, ", error: ", errorThrown); 
 
\t }) 
 
\t .always(function() { \t // 
 
\t \t 
 
\t }); 
 
\t 
 
\t alert("ajax sended"); 
 
} 
 
</script>

+0

нет, нет! toLowerCase готов к стандартной функции объектной строки [link] (http://www.w3schools.com/jsref/jsref_tolowercase.asp). В моем случае, я даже не знаю, почему есть эта ошибка! когда я uncommend //String.prototype.trim в * ajax_test.htm * (и удаляя incluse * common_test.js *), у меня нет проблем! Для понимания, не могли бы вы попробовать? благодаря – dsea

0

Наконец, это вызвано из-за моей определенной функции «String.prototype.подрезать»находится на 2 линии:

String.prototype.trim = function(){return 
 
(this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))}

, если я ставлю на одну строчку:

String.prototype.trim = function(){ \t return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "")) }

или с 'хорошим' следующий синтаксис:

String.prototype.trim = function(){ 
 
\t return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "")) 
 
}

у меня нет больше проблем надеюсь, что это помогает кто-то :)

наилучшими пожеланиями