1

javascript에서 BrowserField의 아약스 요청을 시작하려고합니다.BlackBerry - Browserfield XMLHttpRequest가 유효하지 않습니다.

데모 애플리케이션입니다.이 버튼은 html 요소로서 click시 ajax 요청을 시도합니다.

public MyScreen() { 
    // Set the displayed title of the screen 
    setTitle("MyTitle"); 

    BrowserFieldConfig _myBrowserFieldConfig = new BrowserFieldConfig(); 

    _myBrowserFieldConfig.setProperty(
      BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE); 
    _myBrowserFieldConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, 
      Boolean.TRUE); 
    BrowserField browser = new BrowserField(_myBrowserFieldConfig); 
    browser.displayContent(
      "<!DOCTYPE html><html><head>" 
        + "<script>function loadXMLDoc(){" 
         + "alert('t'); " 
         + "var xmlhttp;" 
         + "if (window.XMLHttpRequest) " 
         +"{ " 
          + "xmlhttp = new XMLHttpRequest(); " 
         + "} " 
         + "else { " 
          + "xmlhttp = new ActiveXObject(\"Microsoft.XMLHTTP\"); " 
         + "}" 
         + " xmlhttp.onreadystatechange=function() " 
         +"{ " 
          + " if (xmlhttp.readyState==4 && xmlhttp.status==200) " 
          + "{" 
//         + " document.getElementById(\"myDiv\").innerHTML=xmlhttp.responseText;" 
          + "}" 
          +"alert('State:'+xmlhttp.readyState+ 'status'+ xmlhttp.status)" 
         + "} " 
         + "xmlhttp.open(\"GET\",\"http://www.w3schools.com/ajax/demo_get.asp\",true);" 
         + "xmlhttp.send(); " 
         + "}" 
        + "</script>" 
        + "</head><body><h2>AJAX</h2><a onclick=\"javascript:loadXMLDoc();\">Request data</a><div id=\"myDiv\"></div></body></html>", 
      "http://www.w3schools.com"); 
    add(browser); 
} 

문제도 첫 번째 경고가 작동하지 않는, 그래서 자바 스크립트 구문 오류가 있어야하지만, 물론, 모든 것이 나에게 좋아 보인다. 내 컴퓨터에서 Firefox에서이 코드를 시도했는데 경고가 표시됩니다 (크로스 도메인이 항상 가능하지는 않습니다). 내 스크립트의 오류는 무엇입니까?

나는 이것을 BB 5.0.0과 7.0.0으로 시뮬레이터에서 테스트했다.

답변

0

잘못된 점은 XMLHttpRequest를 여는 절대 URL을 사용하는 것입니다. 그것은 relativie URL (ie : demo_get.asp)을 사용해야하고 browserfield는 baseurl이 올바르게 설정되어 있어야합니다 (http://www.w3schools.com/ajax/).

매우 불편합니다.

1

나는 당신의 자바 스크립트를 체크 아웃하지 않은,하지만 난 실제로 그것의 Manager 또는 Screen를 포함에 추가됩니다 BrowserField 전에 해당 필드에 콘텐츠를 요청하려고 할 때 이전 문제가 있었다.

그래서, 그냥이 라인을 넣어 :

browser.displayContent(/* content here */); 

업데이트에 호출하기 전에

add(browser); 

을 : 나는 9550 5.0 시뮬레이터에서 코드를 실행할 때 , 나는 똑같은 문제를 안다. 그러나 따옴표, 더하기 부호 및 이스케이프 문자가있는 여러 줄로 분리 된 HTML 및 스크립트의 긴 문자열을 디버깅하는 것은 어렵습니다. 일반적으로 HTML이 정적 인 경우 응용 프로그램과 함께 리소스으로 번들하는 .html 파일에 넣는 것이 좋습니다. 나는이 성공적으로로드 및 자바 스크립트를 실행보고,

<!DOCTYPE html> 
<html> 
    <head> 
     <script> 
       function loadXMLDoc(){ 
        alert('t'); 
        var xmlhttp; 
        if (window.XMLHttpRequest) 
        { 
         xmlhttp = new XMLHttpRequest(); 
        } 
        else { 
         xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        xmlhttp.onreadystatechange=function() 
        { 
         if (xmlhttp.readyState==4 && xmlhttp.status==200) 
         { 
           //document.getElementById("myDiv").innerHTML=xmlhttp.responseText; 
         } 
         alert('State:'+xmlhttp.readyState+ 'status'+ xmlhttp.status) 
        } 
        xmlhttp.open("GET","http://www.w3schools.com/ajax/demo_get.asp",true); 
        xmlhttp.send(); 
       } 
      </script> 
     </head> 
     <body><h2>AJAX</h2><a onclick="javascript:loadXMLDoc();">Request data</a><div id="myDiv"></div> 
     </body> 
</html> 

과 :

그래서 나는 content.html라는 이름의 /res 폴더 아래, 내 프로젝트에 파일로 HTML 문자열의 전체 내용을 퍼팅 시도 onclick이 Java 사용 :

public MyScreen() { 
     super(MainScreen.VERTICAL_SCROLL | MainScreen.VERTICAL_SCROLLBAR); 

     browser = new BrowserField(); 
     add(browser); 

     InputStream content = getClass().getResourceAsStream("/content.html");  
     try { 
     byte[] html = IOUtilities.streamToBytes(content); 
     browser.displayContent(new String(html), "http://localhost"); 
     } catch (IOException e) { 
     e.printStackTrace(); 
     } 
    } 

그래서이 방법을 시도해 보시기 바랍니다. (참고 : 내가 사용하는 localhost 기본 URL은 중요하지 않다 ... html에 상대 링크와 경로가있는 경우에만 중요 함)

+0

작동하지 않았습니다. –

+0

지금 어떤 증상이 있습니까? – Nate

+0

아무것도 내 초기 상황에서 변경된 사항이 없습니다. –

관련 문제