2011-02-08 5 views
0

상황PHP + AJAX

내가 PHP + AJAX와 함께보다 역동적하고 싶습니다 프로젝트에서 일하고 있어요으로 게시물을 보낼 수 있습니다. Javascript를 완전히 사용하기 때문에 AJAX 부분에 jQuery가 사용됩니다. 어쨌든 가치있는 것으로 보입니다. 내 응용 프로그램에서 양식을 사용하여 게시물을 보내야하는 시점에 도달했으며,이 작업을 수행하기 위해 ajax 호출을 사용하려고합니다. 내가 게시하고 싶은 페이지에는 최근 제출 된 15 개의 게시물 목록도 있습니다.

첫 번째 질문 : 그냥 잊어 버리고 PHP 만 사용해야합니까?

액션

사용자는 내가 $("#myPostSubmit").live('click', function() { /* here i make the ajax call */ }); 같은과의 jQuery 스크립트를 관리 할 수 ​​있습니다 핸들러하다는 <a id="myPostSubmit">Submit</a><textarea></textarea> 수와 클릭 수에 뭔가를 기록합니다. 게시물이 성공적으로 제출되면 무언가를 할 것입니다 (다음 섹션에서 이야기 할 것입니다). 내 showAlert(text) 함수를 사용하여 사용자에게 알리거나, text과 함께 4 초 동안 블랙 박스를 표시합니다.

두 번째 질문 : 나는 클릭 이벤트는 다른 방법으로 관리해야 하는가? sendpost(post)과 같은 함수를 만들고이를 onclick="" 이벤트에 첨부해야하나요?

포스트가 성공적으로

를 전송되면 나는 토론을 약 2 옵션을 열 것입니다 : 우리는 페이지를 새로 고침

  1. [전체 페이지를로드하지만 을 실제로 을 게시물 목록을 검색하여 이전의 이 사라지는 또 다른 아약스 호출은 PHP 파일을 에로드하여 새 게시물을 검색합니다. s (방금 보낸 편지 포함)을 입력 한 다음 의 게시물 목록을 표시하십시오.] Pro : 1) 게시 목록이로드 된 후 사용자가 읽고있는 내용이 실제 보낸 게시물임을 확신합니다. 그래서 실제로 실제로 동작을 두 번 확인합니다. 2) 우리는 또한 가능한 한 몇 가지 가능한 게시물을로드합니다. 단점 : 1) 게시 목록 템플릿을 가져 오는 PHP 파일을 만들어서 해당 페이지의 템플릿을 2 개의 파일로 분할해야합니다. 2) 그것은 나에게 매끄럽게 보이지 않습니다.

  2. 게시 템플릿을 가져 오기 위해 Javascript 만 사용하여 목록에 추가합니다. Pro : 1) 전체 페이지를 다시로드하지 않고도 원활하게 처리합니다. 2) 페이지를 새로 고치려면 PHP 파일이 필요 없습니다. Javascript (jQuery) 만 사용합니다. 단점 : 1) 포스트 html 템플릿을 어떻게 목록에 추가 할 수 있습니까? 2) PHP없이 사용자 (기록 된) 정보를 얻으려면 어떻게해야합니까?

세 번째 질문 : 그것은 더 나은 첫번째 또는 두번째 해결책인가? 더 나은 세 번째 솔루션을 제공하겠습니까?

PHP의 페이지

이 AJAX 호출을받을 PHP 페이지는 다음과 같습니다 ?p=action&a=sendpost. 페이지에 $_POST['myMessage']을 설정해야하며 비어 있지 않으며 다른 것은 필요하지 않습니다. 페이지 자체는 쿠키에서 모든 사용자 정보를 가져와 필요한 쿼리를 수행 할 수 있습니다.

응용 프로그램

그것은 3 개 부분으로 나누어 져 있습니다 : , 템플릿, 도서관. 기본적으로 응용 프로그램의 각 페이지에는 자체 .app.php.tpl.php 파일이 있습니다.

  1. .app.php 파일은 라이브러리에서 클래스 및 기타 물건을 사용하여 페이지의 기초의 건물 을 관리합니다. 우리의 경우 데이터베이스에서 데이터를 검색하여 변수에 넣습니다.
  2. 템플릿은 .app.php 파일의 끝에 호출됩니다. .app.php 파일은 검색된 데이터를 템플릿에 보내고 .tpl.php 파일이이를 출력합니다.
  3. 라이브러리는 응용 프로그램 파일에 필요한 클래스와 함수를 포함하는 데 사용됩니다.

네 번째 질문 :이 내 웹 응용 프로그램을 관리하는 좋은 방법이 있나요?

편집 : 사용자에게 경고 메시지를 보내면 어떨까요?

성공 또는 오류시 응답을 관리 할 수있는 $.ajax() 내부의 옵션에 대해 읽었습니다. 그것에 관한 문서는 매우 간단하고 이해하지 못했습니다.

다섯 번째 질문 : 나는 오류 또는 성공 (PHP 파일에서) 반환해야 어떻게?

+0

jQuery 양식 플러그인 (http://malsup.com/jquery/form)을 고려 했습니까? – Tomba

+0

실제 문제는 제출 프로세스가 아니라 다음 (게시물 목록 새로 고침)에서 발생합니다. 어쨌든 jQuery 양식 플러그인 덕분에 도움이 될 것입니다. – Shoe

+0

http://api.jquery.com/jQuery.post/ – Michael

답변

1

첫 번째 질문 : 그냥 잊어 버리고 그냥 PHP를 사용해야합니까?

글쎄, 당신이 아약스를 사용하는 경우 자바 스크립트에 전달할 것입니다 당신이 응용 프로그램, 내가 그것을 잘 생각이 일)

두 번째 질문 : 클릭 이벤트는 다른 방법으로 관리해야 하는가? sendpost (post)와 같은 함수를 만들고 HTML onclick = ""이벤트에 첨부해야합니까?

함수를 만들고 onclick을 바인딩하십시오. 코드가 더 읽기 쉬울 것입니다.)

세 번째 질문 : 첫 번째 또는 두 번째 솔루션이 더 좋습니까? 더 나은 세 번째 솔루션을 제공하겠습니까?

내 솔루션 : 아약스 양식을 제출하고 콜백에 목록에 새로운 의견을 삽입하거나 사용자가 설명 할 수없는 경우 오류 메시지를 표시하십시오. ajax를 사용하여 양식 데이터를 제출하는 경우 jQuery serilize()을 확인하십시오.

넷째 질문 : 이것은 내 웹 응용 프로그램을 관리하는 좋은 방법입니까?

응용 프로그램이 커지면 재 설계해야하지만 현재 해결책이 어려워 질 때 수행하십시오. MVC 프레임 워크 빌드에 대한 좋은 책을 읽으십시오. 그리고 일반적으로 프로그래밍 패턴.

+0

답해 주셔서 감사합니다. 다섯 번째 질문은? – Shoe

+1

json을 Ajax 반환 형식으로 사용하지 마십시오. 성공 및 오류 필드가 없습니다.) – MatejB

1

모든 것을 올바르게 추적하고있는 것 같습니다. 이벤트 처리기를 정확히 연결하는 방법, 페이지에서 데이터를 다시로드하는 방법 및 응용 프로그램을 구성하는 방법에 대한 "모범 사례"라는 의견이 많이 있지만 개인적으로 그런 세부 사항에 대해 걱정하지 않고 개인적으로 소프트웨어를 더 많이 만들 것입니다. . 결국 세부 사항이 나옵니다.

개인적으로 페이지에서 서버 측 렌더링 HTML의 전체 청크를 업데이트하는 것이 더 강력한 솔루션이지만, 사람들이 템플릿으로 훌륭한 결과를 얻는 것을 보았습니다.