2012-03-27 4 views
1

저는 JS와 PHP로 일하는 것에 다소 익숙하며 조금 문제가 있습니다. 내가 PHP로 클릭 한 텍스트 상자의 ID를 전달하려고 시도하고 그 ID로 데이터베이스를 쿼리합니다. 나는 변수가 전달됩니다 있는지 확인하기 위해 다음 코드를했지만, 아무것도 경고하지 않습니다 :자바 스크립트를 통해 변수를 PHP에 전달합니다.

내가 달성하기 위해 노력하고있어
<script type="text/javascript"> 
function Like(ID) 
{ 
<?php 

$id = ID; 
print "alert('$id');"; 

?> 
} 
</script> 

<input type="text" id="1" onclick="Like(this.id)" > 

: 나는 고유 한 ID와 비디오의 데이터베이스를 가지고

을 . 각 비디오 옆에 2 개의 버튼이있어 좋아하거나 싫어합니다. 2 개의 버튼에는 동영상의 ID를 기반으로 한 ID가 있습니다. 예를 들어 동영상 번호 2는 like (id = L2) 및 dislike (id = D2)의 두 개의 버튼이 있습니다. 사용자가 해당 버튼 중 하나를 클릭하면 페이지를 다시로드하지 않고 동영상 표의 '좋아요'항목을 업데이트하려고합니다. 그게 가능할까요?

+2

http://tinsology.net/2009/06/client-side-vs-server-side-code/ – Paulpro

+0

http://www.tizag.com/ajaxTutorial/ajax-mysql-database.php – Paulpro

+2

이 질문에 대한 답변을 시도하지 않을 것이며 의심 할 여지없이 누군가가 당신이 원하는 것을 성취하고 (아약스와 요청을 얻는) 방법을 보여줄 수있는 좋은 자료를 지적 할 수는 있지만, 나는 당신에게 기본적인 이론을 읽도록 조언 할 것입니다 PHP (사용자의 코드를 준비하는 서버 언어)와 javascript (브라우저에서 실행되는)의 조합입니다. –

답변

2

작성한 방식대로 수행 할 수 없습니다. PHP는 페이지로드시 번을 번 실행합니다. 이 정의 된 경우 상수처럼 취급, 또는 문자열 있도록

<script type="text/javascript"> 
function Like(ID) 
{ 
alert('ID'); 
} 
</script> 

ID는, PHP에 bareword는 (그리고 할 수있다 : 당신이 입력을 클릭하면 그래서, 함수는 이미이 같은 PHP에 의해 평가됩니다 경고를 생성). 할당 문자 ID이 없다고 가정하면 변수에 "ID" 문자열을 사용하여 alert 행을 인쇄합니다.

자바 스크립트가 호출 될 때까지받을 수있는 것은 alert('ID')입니다.

데이터베이스를 쿼리하려면 데이터를 서버로 다시 전달해야합니다. 이렇게하면 새 페이지가로드되거나 페이지로드없이 페이지를로드하려는 경우 백그라운드에서 비동기 적으로 서버 호출을 수행하고 결과에 따라 페이지를 수정해야합니다. 이를 AJAX라고합니다. 서버 코드 (php)와 클라이언트 코드 (php)가 어떻게 작동하는지 이해해야한다. 그러면 AJAX가 원하는 것을하기 위해 이들을 함께 사용하는 방법을 더 잘 이해할 수있을 것이다. 당신이 의견이 물었다 때문에

+0

+1 ID를 상수로 먼저 처리하지만 상수가 없으면이를 문자열로 처리하고 경고를 출력 할 수도 있습니다. – Paulpro

+0

음, 고유 ID를 가진 비디오 데이터베이스가 있습니다. 각 비디오 옆에 2 개의 버튼이있어 좋아하거나 싫어합니다. 2 개의 버튼에는 동영상의 ID를 기반으로 한 ID가 있습니다. 예를 들어 동영상 번호 2는 like (id = L2) 및 dislike (id = D2)의 두 개의 버튼이 있습니다. 사용자가 해당 버튼 중 하나를 클릭하면 페이지를 다시로드하지 않고 동영상 표의 '좋아요'항목을 업데이트하려고합니다. 그게 가능할까요? – Glenn

+0

폴 감사합니다. Perl이 barewords를 취급하는 방법에 대해 더 잘 알고 있으며 스크립트 설정에 따라 다릅니다. 그 점에서 PHP가 비슷한지 확실하지 않았습니다. 알아 둘만한. –

1

:

글쎄, 나는 고유 한 ID와 비디오의 데이터베이스를 가지고있다. 각 비디오 옆에 2 개의 버튼이있어 좋아하거나 싫어합니다. 2 개의 버튼에는 동영상의 ID를 기반으로 한 ID가 있습니다. 예를 들어 동영상 번호 2는 like (id = L2) 및 dislike (id = D2)의 두 개의 버튼이 있습니다. 사용자가 해당 버튼 중 하나를 클릭하면 페이지를 다시로드하지 않고 동영상 표의 '좋아요'항목을 업데이트하려고합니다. 그게 가능할까요?

나는 그것을 달성하는 방법을 알려주며 자바 스크립트도 필요하지 않습니다! :) (적어도 처음에는).

구식 HTML 양식 요소입니다. 데이터를 게시 할 것이므로 작업 게시물을 사용해야합니다. 코드는 다음과 같이 표시 할 수 있습니다.

<form method="post" action="/requests/like-video/" class="like-video"> 
    <div> 
     <input type="hidden" name="video_id" value="<?php echo $video->id ?>"> 
     <input type="submit" value="Like"> 
    </div> 
</form> 

<form method="post" action="/requests/dislike-video/" class="dislike-video"> 
    <div> 
     <input type="hidden" name="video_id" value="<?php echo $video->id ?>"> 
     <input type="submit" value="Dislike"> 
    </div> 
</form> 

일단이 코드를 사용했다면 그 양식을 하이재킹해야합니다.

$('form.like-video').ajaxForm(OPTIONS_GO_HERE); 
$('form.dislike-video').ajaxForm(OPTIONS_GO_HERE); 

가이 방법은 JS없는 사용자는 완전한 기능의 사이트를 얻을 수 있도록 하 : 그 일의 슈퍼 쉬운 방법은 jQuery의 양식 플러그인을 사용하여 간단하게 실행하는 것입니다.

점진적 향상이라고합니다.

+0

이렇게하면 페이지가 다시로드되지 않게됩니까? – Glenn

+0

JS (및 ajax)가 없으면 페이지를 새로 고치지 않고도 서버에 데이터를 제출할 수 없습니다. jQuery 코드의 마지막 두 줄이 그 것입니다. 이 방법을 사용하는 것에 대한 좋은 점은 사용자가 JS인지 여부에 상관없이 작동하며 데이터 제출을 위해 고유 한 방법을 고안하지 않고 대신 몇 년 동안 사용해 온 것을 사용하는 것입니다 (간단한 HTML

). – powerbuoy

관련 문제