2012-04-17 2 views
2

AJAX를 사용하여 두 개의 매개 변수를 반환하는 방법은 무엇입니까?AJAX를 사용하여 두 개의 문자열을 반환하는 방법은 무엇입니까?

다음은 내가 가지고있는 것입니다. 여기 내 HTML 페이지에 2 textareas 있습니다. 의 .js가 파일에서

<textarea name="source" id="source" onkeyup="myfunc(this.value);}"></textarea> 
<textarea name="res1" id="res1"></textarea> 
<textarea name="res2" id="res2"></textarea> 

onKeyUp에 이벤트가 이 myfunc() 함수를 호출합니다.

myfunc에()는는 문자열을 포함 결과

... 
xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     document.getElementById("res1").innerHTML=xmlhttp.responseText; 
    } 
} 
xmlhttp.open("POST","ajax_file.php",true); 
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded;charset= UTF-8"); 
xmlhttp.send("q="+encodeURIComponent(str)); 

, ajax_file.php 가 어떤 계산한다 Q 및 P를 계산하고, 질문을 돌려 준다. 문자열 q가 텍스트 영역 res1으로 반환되었습니다. 모든 것은 괜찮습니다. 잘 작동합니다. 하지만 p ~ res2 (다른 텍스트 영역)도 전달하고 싶습니다. 계산되었지만 둘 이상의 매개 변수를 전달하는 방법을 모르겠습니다. 그렇게하는 방법은 무엇입니까? 감사합니다. 당신이 두 개의 매개 변수를 반환 PHP에서 배열을 사용하여 JSON

$arr = array(); 

$arr['str1'] = $str1; 
$arr['str2'] = $str2; 
header('Content-type: application/json'); 
echo json_encode($arr); 

에서 인코딩 할 경우

답변

5

가장 확실한 방법은 (당신이 두 개의 매개 변수를 보내려면)

xmlhttp.send("q="+encodeURIComponent(str)+"&p="+encodeURIComponent(str1)); 

입니다 EDIT - 배열을 반향시키기 전에 correcxt 헤더를 설정하십시오. 그 일을 한 후,

xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
     var resp = JSON.parse(xmlhttp.responseText); 
     document.getElementById("res1").innerHTML=resp.str1; 
     document.getElementById("res1").innerHTML=resp.str2; 
    } 
} 
+0

미안하지만 여전히 나에게는 분명하지 않습니다. 좋아요, $ p와 $ q를 배열 $ arr에 넣고 에코 json_encode ($ arr)라고 말하면됩니다. 승인. 이제 res1에 $ arr [ 'str1']을 추출하는 방법은 무엇입니까? document.getElementById ("res1")를 사용했습니다. innerHTML = xmlhttp.responseText; 내 .js 파일에서 매개 변수 하나만 반환했을 때. 고맙습니다. – Haradzieniec

+0

@Haradzieniec 당신은 JSON 클라이언트 측을 파싱하고 매개 변수를 사용해야합니다. 나는 그것에 대한 나의 대답을 편집했다. JSON은 일반적으로 브라우저 메소드입니다. 이전 브라우저에서 사용할 몇 가지 자바 스크립트 라이브러리가 있습니다. –

+0

내 질문의 끝 부분에 코드를 올려 놓았습니다 (위 참조). 오류가 발생합니다. 고맙습니다. – Haradzieniec

2

봐로를 JavaScript가 기본적으로 처리 할 수있는 JSON 결과가 폭발하는 데 사용할 문자 나 문자가 출력에 포함되지 않도록하기 때문에 모든 문자열 분할보다 좋습니다. = JSON.parse

  • PHP 배열로 발생할 기록하고
  • 자바 스크립트가 이용 가능한 스크립트 객체에 배열하여 해당 전환에 대한 응답으로서이로 json_encode로 인코딩() 및 에코 :

    흐름이있다 (결과), result는 PHP의 결과입니다.

PHP의 $ array [ 'me'] = 'you'는 자바 스크립트에서 배열 [ 'me']가됩니다.

하여 HelloWorld

지금 당신이 원하는 : 당신이 그것으로 두 문자열을 반환 할 수 있지만 페이지의 예를 들어 출력이

에 해당 문자열을 깰 수 있도록

0

아약스는 페이지의 전체 출력을 반환 안녕하세요 세계 모두가 그렇게 같은 출력하게 구분하기 : 안녕하세요, 세계 OR 안녕하세요 - 세계 OR 안녕하세요 | 세계를

을하고 구분자로 분할

$ ("페이지", { "VAR": "값" }, function (응답) {response.split (구분 기호)})

관련 문제