2012-03-30 3 views
-1

나는 PHP 파일에 문자열을 전달하는이 자바 스크립트 코드를 가지고 있으며 경고 상자에 렌더링 할 JSON을 기다린다. 문제는 AJAX가 작동하지 않는다고 생각하는 십자가 문제 때문입니다. 이것은 내가 자바 스크립트를 한 것입니다자바 스크립트에서 PHP로 GET 호출하기 아약스없이

:

<p style="text-align: center;"><script type="text/javascript"> 
var http = new XMLHttpRequest(); 
var params = x; 
http.onreadystatechange=function() 
{ 
    alert(http.responseText); 
    alert(http.responseXML); 

    if (http.readyState==4 && http.status==200) 
    { 

    } 
    } 
    http.open("GET","http://someserver.somesight.edu/scripts/auth.php?name=" + params,true); 
    http.send(); 
</script></p> 

그래서 그건 내 자바 스크립트는 PHP를 호출하고 다음 JSON 문자열을 다시 얻을 수 있습니다. 이 문자열로 더 많은 것을하고 싶지만, 지금은 그냥 다시 돌아가고 싶습니다. 그 아니지만 나는 그것의 도메인 문제 (자바 스크립트가 다른 도메인에서 아약스 요청을 할 수있는 곳이라고 뭐든간에)를 생각하고 있습니다.

이 내 PHP 스크립트입니다 : 이것은 아직 자바 스크립트 경고 상자가 충분히 확인 한 빈 및 null 간단한데

<?php 
include("config.php"); 
include("JSON.php"); 
$selectedusername = $_GET['name']; 
$resultstring = connectToLDAP($selectedusername); //some function 
$echo $resultstring; //the json string 
?> 

. PHP 문자열을 다시 되 돌리는 비 아약스 방법이 있다고 생각했기 때문에 나는 여전히 그 문자열을 처리하고 싶다. 왜냐하면 나는 더 많은 것을 처리하고 싶기 때문이다 ...

그래서 여기에 뭔가 큰 문제가있는 것입니까? 나는 스크립트가 크로스 사이트를 게시 할 수없는 레벨에 관해서는 익숙하지 않다는 것에 주목해야한다. 자바 스크립트는

my.somesight.edu

에서 호스팅 및 사이트 그것이 고토를 시도하는 것은

someother.somesight.edu

나는 그것이 괜찮다고 주요 도메인 인 생각입니다 그 분명히하지 작동하지 않는 때문에, 그러나 (또는 ​​내 코드 파산 그냥)

피들러 결과 :

그것은에서 HTTPS 터널을 수행

자바 스크립트가에 ...있는 사이트이 9에 websession 3 다음 websession 10 안타 그것에 PHP 스크립트가있는 사이트 :

[RAW VIEW CLICKING ON THAT WEB SESSION] 
HTTP/1.1 200 OK 
Date: Fri, 30 Mar 2012 21:07:39 GMT 
Server: Apache/2.2.15 (Red Hat) 
X-Powered-By: PHP/5.3.10 
Content-Length: 53 
Connection: close 
Content-Type: text/html; charset=UTF-8 
{"messagetype":"none","message":"time good","url":""} 

은 그래서 JSON 내가 다시 원하는 것을, 좋아 보인다 내 자바 스크립트 .. 아무 일도 일어나지 않아.

+0

해야한다. –

+0

'http.onreadystatechange'를 정의하기 전에'http.send();'를 실행하십시오. - 순서를 바꿉니다. – hamczu

+0

순서를 바꾸면 여전히 responseText와 XML이 비어 있습니다. 스크립팅 옵션을 변경하고 JSONP를 사용할 수있는 권한이 있다면 더 자세히 조사 할 것입니다. – Codejoy

답변

0

피들러를 설치하고 서버에서 보내고받는 요청을보십시오. 아직 알 수없는 경우 여기에 게시하십시오.

+1

이 피들러는 멋집니다. 나는 그것이 exsisted했다는 것을 몰랐다. 나는 그것을 사용하는 방법을 알아 내려고하고, 서버에 요청과 응답을 찾아서 게시하려고한다. – Codejoy

+0

k 게시 질문 수정 ... – Codejoy

0

CORS 및 JSONP를 사용하여 교차 사이트 문제를 피할 수 있습니다. 서버에 대한 액세스/관리 권한이있는 경우 Access-Control-Allow-Origin 헤더를 설정할 수 있으며 크로스 도메인은 더 이상 도메인 간이 아닙니다. 다른 옵션은 스크립트 블록을 통해 상호 도메인 GET 요청을 사용하는 JSONP입니다. json에있는 결과는 콜백 함수가 호출됨에 따라 평가됩니다.

0

PHP가 일반 문자열을 다시 표시합니다. 일반 문자열은 원하지 않습니다. JSON으로 인코딩 된 데이터가 필요합니다.

PHP Manual json-encode

그래서 귀하의 예제에서, 시도 :

echo json_encode($resultstring); 

또한, 당신은 JSON 데이터를 반환하기 위해 자바 스크립트가 수신되어 있는지 확인해야합니다.jQuery의 getJson 아약스 메소드를 사용해 보는 것이 좋습니다. 사용이 매우 간단합니다.

+0

사실은 ldap 함수에 연결하면 json 문자열이 이미 반환됩니다. 그것의 다만 끈은 이렇게 그것을 반향하는 것은 잘이어야한다. – Codejoy

+0

아, 그냥 OP가 아닌 아약스 솔루션을 요청 깨달았다, 미안 해요. – penco

0

자바 스크립트 코드는 여기에 데이터를 반환하지 않습니다

if (http.readyState==4 && http.status==200) 
{ 

} 

그것은 AJAX는 JSONP를 사용하지 않고 크로스 도메인을 작동하지 않습니다

if (http.readyState == 4 && http.status == 200) { 
    alert(http.responseText); 
    //or 
    document.write(http.responseText); 
    //or 
    document.getElementById('id').innerHTML = http.responseText; 
} 
관련 문제