2016-07-20 3 views
1

asp.net, jquery mobile 및 phonegap을 사용하여 테스트 모바일 앱을 작성하고 있습니다. 나는 1 년을 입력하고 제출을 클릭하는 간단한 양식이 있습니다. 결과를 반환하고 두 번째 페이지에 표시되는 서버의 results.aspx.cs 페이지로 Ajax 호출이 수행됩니다.모바일 앱에서 AJAX 요청 404를 제공합니다.

로컬 서버에서 모바일 앱을 실행하면 404 오류가 발생합니다 - responseText : "POST /results.aspx.cs/IsLeapYear↵", 상태 : 404, statusText : "찾을 수 없음"}. 다음

$(document).on('pageinit', '#home', function() { 
$(document).on('click', '#submit', function() { // catch the form's submit event 
    if ($('#txtYear').val().length > 0) { 
     $.ajax({ 
      url: 'http://website.com/results.aspx.cs/IsLeapYear', 
      data: '{ year: "' + txtYear.value + '"}', 
      type: 'post', 
      async: 'true', 
      dataType: 'json', 
      success: function (result) { 
       if (result.status) { 
        result.val = "Leap Year"; 
        $.mobile.changePage("#second"); 
       } else { 
        result.val = "Not a Leap Year";       
       } 
      }, 
      error: function (request, error) {      
       // This callback function will trigger on unsuccessful action     
       alert('Network error has occurred please try again!'); 
      } 
     }); 
    } else { 
     alert('Please fill all necessary fields'); 
    } 
    return false; // cancel original event to prevent form submitting 
}); 
}); 

results.aspx.cs 포함 :

[System.Web.Services.WebMethod] 

public static bool IsLeapYear(int year) 
{ 
    return DateTime.IsLeapYear(year); 
} 

사람 수 다음

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<meta name="format-detection" content="telephone=no" /> 
<meta name="msapplication-tap-highlight" content="no" /> 
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width" /> 
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css"> 
<link rel="stylesheet" href="css/jqm-icon-pack-fa.css"> 
<link rel="stylesheet" type="text/css" href="css/index.css" /> 
<script src="js/jquery-2.1.3.min.js" type="text/javascript"></script> 
<script src="js/jquery.mobile-1.4.5.min.js" type="text/javascript"></script> 
<script> 
    var SectedCityCode, URL, prov; 
    $(document).bind('mobileinit', function() { 
     $.mobile.pushStateEnabled = false; 
    }); 
</script> 
<title>Hello World</title> 
</head> 
<body> 
<!-- Start of first page --> 
<div data-role="page" id="home"> 

    <div data-role="header"> 
     <h1>Test</h1> 
    </div> 

    <div data-role="content"> 
     <div data-role="main" class="ui-content"> 
      <div class="ui-body ui-body-a ui-corner-all"> 
       <form id="checkyear" class="ui-body ui-body-a ui-corner-all" data-ajax="false"> 
        <label for="txtYear">Enter the year:</label> 
        <input type="text" name="txtYear" id="txtYear" value="" /> 
        <input type="button" data-theme="b" name="submit" id="submit" value="Submit"> 
       </form> 
      </div> 
     </div> 

    </div> 

    <div data-role="footer" data-position="fixed"> 
     <h4>Page footer</h4> 
    </div> 
</div> 
<!-- end of first page --> 
<!-- start of second page --> 
<div data-role="page" id="second"> 
    <div data-theme="a" data-role="header"> 
     <h3>Welcome Page</h3> 
    </div> 

    <div data-role="content"> 
     <p id="result"></p> 
    </div> 

    <div data-theme="a" data-role="footer" data-position="fixed"> 
     <h3>Page footer</h3> 
    </div> 
</div> 
<!-- end of second page --> 
<script type="text/javascript" src="js/index.js"></script> 
</body> 
</html> 

하는 index.js 포함 :

index.html 페이지에는 다음이 포함 내가 어떤 실수를 저지르고 있는지 말해 줄래?

+0

대체 수단을 통해 웹 사이트에 액세스 할 수 있습니까? HTTP 클라이언트를 사용하여 URL에서 요청 헤더와 본문을 테스트 해보십시오.이 상황에서 매우 유용한 도구입니다. http://www.swensensoftware.com/im-only-resting – MPaul

+0

멋진 도구. 내가 http://169.254.51.156:3000/results.aspx.cs를 GET 할 때 상태 200 OK이지만 POST로 404 Not Found를 얻습니다. 왜 그런가? – citm09

+0

은 브라우저에서의 작동/ –

답변

0

프로젝트에 화이트리스트 플러그인을 추가하십시오.

cordova plugin add cordova-plugin-whitelist --save 

이렇게하면 Android 기기에서 http 요청을 사용할 수 있습니다. 또한 그런 다음 HTTP 요청 자세한 내용 thanks.For 제대로 작동됩니다 config.xml에

<access origin="*"/> 
<allow-intent href="*"/> 
<allow-navigation href="*"/> 

을 이러한 행을 추가 안드로이드 AndroidManifest.xml.It 마지막에이 권한

<uses-permission android:name="android.permission.INTERNET" /> 

을 필요로 확인 읽어 보시기 바랍니다 Whitelist

+0

행을 추가했지만 여전히 운이 없습니다. 같은 오류 메시지. POST를 할 수 없습니다. – citm09

+0

플러그인 화이트리스트를 설치하셨습니까? –

+0

cordova-plugin-whitelist plugin은 Android 및 iOS 용입니다. Blackberry에서는 사용할 수 없습니다. BB Z30에서 디버그 모드로 앱을 설치했지만 여전히 운이 좋지 않습니다. – citm09

관련 문제