2015-02-07 5 views
0

SQL 데이터베이스에서 데이터를 가져 와서 PHP 변수 배열을 채우는 서버 측 PHP 페이지가 있습니다. 각 변수의 마지막 배열 값을 사용하여 데이터를 처음에 양식의 세 번째 프레임 (즉, 값 =)에 채 웁니다. 이 양식에는 전체 페이지를로드하지 않고 변수의 값 (예 : 값 =)의 "이전"또는 "다음"세트로 양식의 세 번째 프레임을 채우기 위해 사용하려는 "이전"및 "다음"링크가 있습니다 . 나는 자바 스크립트에 매우 익숙하지만 php와 sql은 AJAX를 처음 사용하려고 시도 할 것입니다. 내가 뭘하려는 건 배열 번호 또는 변수, 다음 변수 집합에 대한 값이 나타납니다 배열 카운터 (예 : $ 카운터) 증가 또는 감소 AJAX 함수를 PHP 변수 인 카운터를 전달하는 것입니다. 폼의 프레임 3. 내 문제는 자바 스크립트 변수로 처리 할 AJAX 함수에 현재 $ 카운터 값을 전달할 수 있지만 폼의 프레임 3에서 PHP 변수를 업데이트하기 위해 결과를 어떻게 다시 전달할 수 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.Ajax를 통해 PHP 변수를 전달하여 프레임 업데이트

블랙 스퀘어 :

내 PHP 웹 페이지가 첫 번째 부분입니다. 그것은 기본 SQL 데이터베이스에서 데이터를 수집하고 PHP 배열에 배치합니다. 웹 페이지가 처음로드 될 때 가장 최근 또는 마지막 레코드는 다음과 같이 (value = $ dataField [$ counter]) 같은 것을 사용하여 단일 프레임에있는 양식 필드를 채우는 데 사용됩니다. 이 작업은 페이지가 처음으로로드 될 때 모든 프레임 필드에 SQL 데이터베이스의 마지막 레코드 데이터를 채우는 경우에 작동합니다. 내가하려고하는 것은 $ 카운터 값을 가져 와서 1 씩 증가 또는 감소시키는 "다음"또는 "이전"링크 (예 : onclick 이벤트)를 클릭하여 활성화되는 AJAX 함수를 만드는 것입니다. 페이지를 다시로드하지 않고 동일한 프레임의 "다음"또는 "이전"PHP 배열 레코드에서 필드를 표시하는 프레임을 새로 고칩니다.

답변

0

ajax 요청 (변수를 post 매개 변수로 전달)을 처리하고 php 파일에 응답을 표시하는 PHP 파일을 만들어야합니다.

그러면 ajax 파일에서 응답이 성공적으로 반환되고 jQuery를 사용하여 응답이 업데이트됩니다.

참고 : PHP 파일의 응답 뒤에 'exit'를 입력하는 것을 잊지 마십시오. 예를 들어

:

$.post("test.php", { counter: <?php echo $counter; ?>}).done(function(data) { alert("Data Loaded: " + data); }); 
0

당신이 AJAX 호출의 결과를 얻을 후 자바 스크립트를 사용하여 적절한 HTML 요소를 변경 어떻습니까? PHP 변수를 설정 한 다음 해당 필드를 사용하여 JavaScript에서 HTML 값을 직접 변경할 수있는 경우 HTML의 값을 설정할 필요가 없습니다.

0

PHP가 생성 한 정적 페이지에 변수를 다시 전달할 수 없습니다. 아마도 가장 좋은 방법은 페이지로드시에만 양식을로드하는 것입니다. 그런 다음 서버 측에서 다른 PHP 스크립트에 대한 ajax 호출을 사용하여 동적 데이터를 가져옵니다 (저는 jQuery for ajax를 사용하고 있습니다).

$.ajax({ 
    type: "GET", 
    url: someURL, //A link to your php script that will load the data 
    dataType: "json" //Ask for json data from the server 
}).done(function(data) { 
    nextRecords = data; 
    getNextRecord(); 
}).fail(function(resp) { 
    console.log("Something Went Wrong"); 
}); 
, 당신을 someURL에 액세스 별도의 PHP 스크립트에 SQL 논리를 이동하고 사용자가 이전/다음 버튼을 칠 때 PHP는 지금이

$query = ...Your select query returning an array of results 
echo json_encode($query); 
exit; 

처럼 다시 JSON 데이터의 배열을 전달해야

서버에 게시하지 않고도 최신 레코드를 쉽게 가져올 수 있습니다.

function getNextRecord() { 
    if (nextRecords.length > 0) { 
     var record = nextRecords.pop(); 
     var node = document.getElementById(node_name); 
     node.innerHTML = record; 
     if (currentRecord){    
      prevRecords.push(currentRecord); 
     } 
     currentRecord = record; 
    } 
} 

function getPreviousRecord() { 
    if (prevRecords.length > 0) { 
     var record = prevRecords.pop(); 
     var node = document.getElementById(node_name); 
     node.innerHTML = record; 
     if (currentRecord) {    
      nextRecords.push(currentRecord); 
     } 
     currentRecord = record; 
    } 
} 
+0

블랙 스퀘어 - 본인의 원래 질문을 편집하여 답변에 대한 추가 정보를 얻었습니다. 상기 참조하십시오. – buckibooster

+0

문제점이 무엇인지 확인했습니다. 첫 번째 레코드 서버 측을로드하는 대신이 방법을 시도해보십시오.PHP에서 폼만로드 한 다음 ajax를 통해 모든 데이터를 한 번에로드하십시오. 내 대답을 업데이트 할게. – kellanburket

+0

그게 답이라고 확신합니다. 난 그냥 내 응용 프로그램과 함께 작동하도록 잠시 동안 작업해야합니다. Blacksquare에게 감사드립니다! – buckibooster

관련 문제