2016-06-20 2 views
0

대답 목록을 만들려면 아약스 사용하고 있습니다. 리스트의 마지막에아약스 제출 dupplicate을 방지

나는 사용자가 (아약스와도) 응답을 추가 할 수 있도록 텍스트 영역 양식을 추가했다.

문제

는 사용자가 페이지가 JS 코드를 "알고"하지 않습니다 회신을 제출하려면 이렇게 할 때 난 내 주요 PHP 페이지에 내 JS에 전화 것입니다. js를 ajax PHP 파일/페이지에 추가하면 코드가 작동하지만 여러 번 복제 될 것이고 사용자가 양식을 제출할 때 텍스트가 여러 번 제출 될 것입니다 ...

제 콘솔에서 JS 파일 내가

내가 그것을 어떻게 방지 할 수 답장 목록을로드 할 때마다 중복?

+1

우리는 참조 코드를 주시겠습니까? – Ben

+0

코드 게시 –

+0

제출 버튼을 누른 후에 제출 버튼을 비활성화해야합니다. 온라인으로 많은 예제를 찾을 수 있습니다. –

답변

0

사용자가 한 번 버튼을 누르면 즉시 제출 버튼을 비활성화합니다. jQuery를 사용
:

$("#button").attr('disabled','disabled'); 

그래서 사용자가 새로운 데이터로 신청서를 다시 제출 할 수 AJAX 오류에 disabled 속성 을 제거해야합니다. 당신이 탐색하거나 F5를 눌러, 단순히 당신이 원하는 일을 한 후 $ _POST 바르를 해제 할 때 데이터를 반복하지하려면

$('#button').removeAttr('disabled'); 
+0

하지만 문제는 사용자가 두 번 제출하지입니다 . 문제는 js 파일이 1 회 이상로드되는 것입니다. 여기를 참조하십시오 : http://stackoverflow.com/questions/37918915/how-to-prevent-duplicate-code-phpajax – user6256769

0

[개선] 을하고, 밤은 있는지 확인 :

이 같은 disabled 속성을 제거 할 수 있습니다 당신이 원할 때마다 당신을 리다이렉트합니다. 예 :

/* HERE do the job with ajax response. */ 
    if(!isset($_post['foo'])) header('Location: wherever.php'); 
$_POST['foo']=NULL; 

당신이 $ _GET을 사용하는 경우가 ...하지 마, $ _POST ... $ _POST를 사용하는 것은 당신의 친구입니다.

마침내 당신이 F5를 누르면, 당신은 우편으로 양식 바르를 다시 보내지 않도록 (그렇지 않으면 당신은 같은를 얻을 것이다). 이런 일이 발생하면 페이지로드시 jQuery로 입력 내용을 지우십시오.

$('#inputID').val(''); 
+0

문제는 이중 제출과 관련이 없습니다. 사용자가 문제는 js 파일이 1 회 이상로드되는 것입니다 ... 여기를 참조하십시오 : http://stackoverflow.com/questions/37918915/how-to-prevent-duplicate-code-phpajax – user6256769

+0

일어나는 경우에도 그것을 막기 위해 유리 병을 사용하십시오. 그런 다음 JS를 어디에서 호출했는지 확인하고 코딩 방법을 확인하십시오. send 버튼에서 onclick 이벤트가 발생할 때 preventdefault를 사용하여 jquery 함수를 호출하는 것이 좋습니다. 그런 다음 원하는 곳을 확인할 수 있습니다 (예 : var가 중복 된 경우).== 1) 그래서 js가이 var를 1로 설정할 수 있고 다음로드에서 아무 것도 일어나지 않을 때 onlcick jquery 함수가있는 send 버튼을 다시 누르지 않으면 default로 설정하고 1로 설정할 수 있습니다. 다시 원하는대로). – JoelBonetR