2014-08-30 5 views
0

웹 사이트를 구축하고 테스트하기 위해 WAMP 서버를 설정했습니다. 내 첫 시간이고 AJAX (jQuery 기반)와 관련된 모든 것을 얻을 때까지 계속 진행됩니다.WAMP가 jQuery AJAX를 성공적으로 실행하지 않음

기본 시작은 사용자 로그인 양식입니다. Submit 버튼은 AJAX 호출이있는 JavaScript 함수로 이동하여 사용자 등의 데이터베이스를 검사합니다. 실패했습니다. Google의 개발 도구는이 문제가 "예기치 않은 토큰 <"이라고 표시했습니다. 그 라인은 AJAX가 돌아 왔을 때였습니다.

AJAX가 유효한 JavaScript가 아닌 빈 HTML 페이지를 반환하고이 오류가 발생하면이 문제가 발생하는 것 같습니다. 그리고이 컨텍스트에서 PHP가 발견되지 않으면 404 페이지를 던져 버리는 경우이 문제를 일으킬 것이라고 추측합니다.

그래서 나는 1 시간 동안 아무런 기쁨도없이 기어 올라갔습니다. 그런 다음 AJAX의 간단한 버전을 조롱하고 사용자 로그인 양식을 다시 작성하여 단계적으로 내 문제를 찾으려고했습니다. 그것은 작동하지 않았다.

실제 서버에서 똑같은 것을 빌드하고 실제로 작동했음을 알았습니다. 그래서 지금은 내 문제가 WAMP 서버 설정과 관련이 있다고 생각합니다. 나는 AJAX 호출이 설정에서 작동 할 것이라고 믿게되었다.

이 문제를 일으킬 수있는 아이디어와 jQuery 및 AJAX에 대해 올바르게 WAMP를 설정하는 방법에 대한 정보는 어디서 볼 수 있습니까?

더 모호한 시도 ​​스와핑 포함했다하십시오 던졌다

http://localhost/ 
for 
http://127.0.0.1/ 

"아니 '액세스 제어 - 허용 - 원산지'헤더가 요청 된 자원에 존재합니다." 오류. 위대한 Apache가 다른 포트에 있다고 생각했습니다. AJAX 호출에

crossDomain: true; 
dataType: "jsonp", 

및 반환 : "리소스 스크립트로 해석하지만, MIME 타입 text/html과 함께 전송"그러나 이것은 반환 아니 아파치는

80가에 추가하는 시도 포트에 "예기치 않은 토큰 <"오류가 발생했습니다.

저는 아이디어가 부족합니다. 만약 당신이 있다면, 나는 감사 할 것입니다. -

편집 나는 내가 test1.js 파일의 라인 10시에 실패하는 내 기본 경우 던질 거라고 생각 :

test1.html

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <script src="jquery-2.0.3.min.js"></script> 
     <script src="test1.js"></script>    
    </head> 
    <body> 
     <form id="test_form" name="test_form"> 
      <fieldset> 
       <input type="email" id="test_email" name="test_email" /> 
       <input type="submit" value="Login" /> 
      </fieldset> 
     </form> 
    </body> 
</html> 

test1.js

$(function() { 
    $("#test_form").submit(function() { 
     var postData = $(this).serialize(); 
     $.ajax({ 
      type: "POST",    
      data: postData, 
      url: "http://localhost/test/test1.php", 
      success: function(data) {   
       var test_data = JSON.parse(data); 
       if (test_data.test_success == "success") { 
        window.location.replace("http://localhost/test/test2.html");      
       } else {  
        window.alert("Test Failed.", function(){}, "Test Failed", "OK");   
       } 
      }    
     });   
     return false; 
    }); 
}); 

test1.php

<?php 
$email = $_POST["test_email"]; 
if ($email == '[email protected]') { 
    $arr = array("test_success" => "success"); 
    echo json_encode($arr); 
} else { 
    $arr = array("test_success" => "failed"); 
    echo json_encode($arr); 
} 
?> 

test2.html

<!DOCTYPE html> 
<html lang="en"> 
    <head>   
    </head> 
    <body> 
     Success! 
    </body> 
</html> 
+0

ajax에서 나는 do 'do not see'dataType : 'json'where anywhere – Jason

+0

나는 이러한 시도를하지 않고서도 ajax()가 자동으로 실패하지 않고 시도했다. 아마도 반환되는 것은 json이 아니라 html이기 때문일 것이다. – ashcanschool

+0

네트워크 패널 검사기가 ajax 요청을 볼 때 표시합니까? 헤더, 요청, 자바 스크립트 코드에 대한 응답을 볼 수 있습니다. 그리고 console.log (test_data); – Jason

답변

0

도움을 주신 모든 분들께 감사드립니다. 그 잘못은 모두 내 것이었다 (예상대로). 좀 더 복잡한 버전의 코드에서는 실패한 PHP 코드가 좋고 오류를 나열한 웹 페이지를 반환하기 때문에 작동하지 않습니다. 불행히도 나를 위해 (아주)이 예외를 잘 처리하지 못했으며 HTML이 아닌 JSON을 수신 할 것으로 기대하면서 모든 지옥이 느슨해졌습니다.

오류의 구체적인 원인을 추적하기 위해 코드를 작게 만들었을 때 필자가 실수를 범했습니다. 더 큰 코드 (특히 real_escape_string() 함수의 나머지 부분에 남겨 두었습니다. 테스트 케이스로 실행했을 때 오류가 발생했습니다. 일단 문제가 해결되면 오류 처리 및 오류 처리를 더 잘 수행 할 수 있습니다. 내가 뭘하는지 알 수있는 것처럼 오류를보고 해결할 수 있습니다.

관련 문제