2013-09-01 56 views
51

Tôi đã thử nhiều thứ và không có cách nào, luôn xuất hiện lỗi này Tôi đã cố gắng chỉ sử dụng một tùy chọn để xem liệu đã qua, đã thay đổi cuộc gọi của jquery, nhưng không.lỗi cú pháp: mã thông báo không mong muốn <

Tôi đã tìm kiếm các địa điểm khác nhau trên internet về lỗi này, nhưng không thể giải quyết hoặc hiểu tại sao nó xảy ra. Trên máy tính của tôi sử dụng EasyPHP hoạt động hoàn hảo, nhưng khi tôi đặt trực tuyến không hoạt động.

Cú pháp Lỗi: bất ngờ thẻ <

Dưới đây là mã của tôi:

$(function(){ 
$('#salvar').click(function(){ 
    var key = 'salvar'; 
    var title = $('#title').val(); 
    var opcao1 = $('#opcao1').val(); 
    var opcao2 = $('#opcao2').val(); 
    var opcao3 = $('#opcao3').val(); 
    var opcao4 = $('#opcao4').val(); 
    var opcao5 = $('#opcao5').val(); 
    var opcao6 = $('#opcao6').val(); 

    if(title.length > 0){ 
     if(opcao2.length > 0){ 
      $('#resposta').removeClass().html('Salvando a enquete...<br clear="all"><br><img src="images/switch-loading.gif" />'); 
      $.ajax({ 
      type : 'POST', 
      url : 'funcoes/enquete_adm.php', 
      dataType : 'json', 
      data: {key:key,title:title,opcao1:opcao1,opcao2:opcao2,opcao3:opcao3,opcao4:opcao4,opcao5:opcao5,opcao6:opcao6}, 
      success : function(data){ 
       if(data.sql == 'ok'){ 
         $('#resposta').addClass('success-box').html('Enquete Salva!').fadeIn(1000); 
         $('#control').fadeOut(); 
        }else if(data.sql == 'error'){ 
         $('#resposta').addClass('info-box').html('Ops, aconteceu um erro. Por favor, tente novamente').fadeIn(1000); 
        } 
       }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) {  
       alert("XMLHttpRequest " + XMLHttpRequest[0]);alert(" errorThrown: " + errorThrown);alert(" textstatus : " + textStatus);  
      } 
      }); 
     }else{ 
      $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções'); 
     }; 
    }else{ 
     $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete'); 
    }; 
    return false; 

}); 
}); // End 
+0

Nó có nói tệp nào trong bảng điều khiển không? – Sergio

+1

lỗi nên cung cấp cho bạn một tệp và số dòng, đăng dòng cụ thể mà nó trỏ tới. –

+0

Tôi không nhớ mình đã tìm thấy lỗi ở đâu. Nhưng là trong mã php. –

Trả lời

12

Bạn có cần thiết ; (phẩy):

Ví dụ ở đây:

}else{ 
     $('#resposta').addClass('warning-box').html('É necessário no mínimo duas opções'); 
    }; 

Đường nhỏ ; sau } không chính xác.

Một ví dụ ở đây:

}else{ 
    $('#resposta').addClass('warning-box').html('Coloque a pergunta da enquete'); 
}; 
91

này thường xảy ra khi bạn bao gồm hoặc đăng vào một tập tin mà không tồn tại. Máy chủ sẽ trả về định dạng html thông thường "404 Không tìm thấy" kèm theo

'<html></html>' 

thẻ. Chronron đầu tiên < không phải là js hợp lệ và json hợp lệ, do đó nó kích hoạt một mã thông báo không mong muốn.

Điều gì xảy ra nếu bạn cố thay đổi 'funcoes/enquete_adm.php' thành url tuyệt đối, chỉ để chắc chắn?

+0

Lạ lùng, bởi vì tôi có một số lệnh khác bằng cách sử dụng JS URL theo cùng một cách và nó hoạt động hoàn hảo, tôi chỉ cho bạn vấn đề này. Và trong PC của tôi hoạt động hoàn hảo khi đưa vào máy chủ không hoạt động. –

+0

Cảm ơn. Điều này làm việc cho tôi. Tôi đã đánh sai tên tệp js của mình. – lwdthe1

0

Chỉ cần bỏ qua tham số đi qua như một sai lầm trong kịch bản java chức năng

Ex:

function getCities(stateId,locationId=false){  

    // Avoid writting locationId= false kind of statements 
    /*your code comes here*/ 

} 

Tránh writting locationId = false loại báo cáo, Vì đây sẽ cung cấp cho các lỗi trong chrome và IE

2

Tôi đã có một vấn đề tương tự, và vấn đề của tôi là tôi đã gửi javascript để hiển thị thông báo console.

Ngay cả khi tôi xem tệp trong trình duyệt (không thông qua ứng dụng), nó hiển thị chính xác như tôi mong đợi (ví dụ: thẻ phụ không hiển thị), nhưng đã hiển thị trong đầu ra html/text và đang cố gắng phân tích cú pháp.

Hy vọng điều này sẽ giúp ai đó!

2

Tôi nghi ngờ một trong các tập lệnh của bạn bao gồm source map URL. (Minified jQuery chứa tham chiếu đến bản đồ nguồn, chẳng hạn.)

Khi bạn mở công cụ nhà phát triển Chrome, Chrome sẽ cố tìm nạp bản đồ nguồn từ URL để hỗ trợ gỡ lỗi. Tuy nhiên, bản đồ nguồn không thực sự tồn tại trên máy chủ của bạn, nhưng thay vào đó bạn được gửi một trang 404 thông thường có chứa HTML.

0

Chỉ cần ném điều này vào đây vì tôi gặp phải lỗi tương tự nhưng vì nhiều lý do khác nhau.

Tôi đang phân phối qua nút/express/jade và đã chuyển một tệp ngọc bích cũ. Một trong những dòng là không bork khi Typekit thất bại:

script(type='text/javascript') 
    try{Typekit.load();}catch(e){} 

Dường như đủ vô thưởng vô phạt, nhưng cuối cùng tôi nhận ra rằng cho các khối kịch bản ngọc bích nơi bạn đang thêm nội dung bạn cần một .:

script(type='text/javascript'). 
    try{Typekit.load();}catch(e){} 

Đơn giản nhưng phức tạp.

1

Lỗi này cũng có thể phát sinh từ cuộc gọi AJAX JSON tới tập lệnh PHP có lỗi trong mã của nó. Máy chủ thường được thiết lập để trả về thông tin lỗi PHP được định dạng bằng đánh dấu html. Phản hồi này được hiểu là JSON không hợp lệ, dẫn đến lỗi "AJAX token <" không mong muốn.

Để xem lỗi PHP bằng Chrome, hãy chuyển đến bảng điều khiển Mạng trong thanh tra web, nhấp vào tệp PHP được liệt kê ở bên trái và nhấp vào tab Phản hồi.

1

Khi đăng qua ajax, nó luôn luôn là một ý tưởng tốt để đầu tiên nộp bình thường để đảm bảo các tập tin đó được gọi là luôn luôn trở về dữ liệu hợp lệ (json) và không có lỗi với html thẻ hoặc khác

<form action="path/to/file.php" id="ajaxformx"> 

Bằng cách thêm vào x với giá trị id, jquery sẽ không xử lý nó.

Khi bạn chắc chắn mọi thứ đều tốt sau đó loại bỏ các x từ id="ajaxform" và trống giá trị action thuộc tính

Đây là cách tôi sắp xếp những lỗi tương tự cho bản thân mình chỉ là một vài phút trước :)

6

tôi nghi ngờ bạn đang nhận được mã hóa text/html để đáp ứng với yêu cầu của bạn vì vậy tôi tin rằng vấn đề là:

dataType : 'json', 

hãy thử thay đổi nó để

dataType : 'html', 

Từ http://api.jquery.com/jQuery.get/:

datatype Loại: String Các loại dữ liệu dự kiến ​​từ máy chủ. Mặc định: Guess thông minh (xml, json, script hoặc html).

+0

Thiên Chúa chúc lành cho bạn trong sự phong phú. Bạn đã cứu tôi sau 12 giờ tìm kiếm! – user1930402

1

Tôi cũng có syntax error: unexpected token < khi đăng biểu mẫu qua ajax. Sau đó, tôi sử dụng curl để xem những gì nó sẽ trả về:

curl -X POST --data "firstName=a&lastName=a&[email protected]&pass=aaaa&mobile=12345678901&nID=123456789123456789&age=22&prof=xfd" http://handymama.co/CustomerRegistration.php 

tôi có một cái gì đó như thế này như một câu trả lời:

<br /> 
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>3</b><br /> 
<br /> 
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>4</b><br /> 
<br /> 
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>7</b><br /> 
<br /> 
<b>Warning</b>: Cannot modify header information - headers already sent by (output started at /home/handymama/public_html/CustomerRegistration.php:1) in <b>/home/handymama/public_html/CustomerRegistration.php</b> on line <b>8</b><br /> 

Vì vậy, tất cả tôi phải làm là chỉ cần thay đổi mức độ log để chỉ lỗi hơn cảnh báo.

error_reporting(E_ERROR); 
0

Điều này xảy ra với tôi với một trang được tải thông qua iframe. Trang iframe src có tham chiếu tập lệnh 404.Rõ ràng là tôi không thể tìm thấy tài liệu tham khảo tập lệnh trong trang gốc, vì vậy tôi mất một lúc để tìm ra thủ phạm.

4

Các lỗi SyntaxError: Unexpected token < thể có nghĩa là thiết bị đầu cuối API không trở về JSON trong cơ thể tài liệu của nó, chẳng hạn như do một 404.

Trong trường hợp này, nó hy vọng sẽ tìm thấy một { (bắt đầu JSON); thay vào đó, nó tìm thấy một < (bắt đầu của một phần tử tiêu đề).

phản ứng thành công:

<html> 
    <head></head> 
    <body> 
    {"foo": "bar", "baz": "qux"} 
    </body> 
</html> 

Không-tìm thấy câu trả lời:

<html> 
    <head></head> 
    <body> 
    <h1>Not Found</h1> 
    <p>The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.</p> 
    </body> 
</html> 

Hãy thử truy cập URL điểm cuối dữ liệu trong trình duyệt của bạn để xem những gì đang trở lại.

+0

Tuyệt vời! Cảm ơn. – mendez7

0

chắc chắn rằng bạn không bao gồm mã jquery giữa

< script> </script>

Nếu vậy loại bỏ và mã sẽ làm việc tốt, Nó làm việc trong trường hợp của tôi.

1

tôi kiểm tra tất cả bao gồm JS Paths

Ví dụ Thay đổi này

<script src="js/bootstrap.min.js" type="text/javascript"></script> 

ĐẾN

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" type="text/javascript"></script> 
1

Loại bỏ dòng này từ mã của tôi giải quyết vấn đề của tôi.

header("Content-Type: application/json; charset=UTF-8"); 
Các vấn đề liên quan