2013-08-03 2 views
0

나는 "chatbox"에 메시지를 게시하는 것이지만 false를 반환 할 때; 함수가 끝나면 데이터를 제출하지 않지만 제거하면 반드시 제출해야합니다.Javascript 게시물, withouth 새로 고침 페이지

JS 코드

function dopost() { 
    var request; 
    $("#chat").submit(function(event){ 
     if(request) { 
      request.abort(); 
     } 
     var $form = $(this); 
     var $inputs = $form.find("input, button"); 
     var serializedData = $form.serialize(); 

     $inputs.prop("disabled", true); 

     request = $.ajax({ 
      url: "/chat.php", 
      type: "post", 
      data: serializedData 
     }); 


     request.done(function(response, textStatus, jqXHR) { 
      console.log("Hooray, it worked!"); 
     }); 
     request.fail(function(jqXHR, textStatus, errorThrown){ 
      console.error("The following error occured:" + textStatus, errorThrown); 
     }); 

     request.always(function(){ 
      $inputs.prop("disabled", false); 
     }); 
     e.preventDefault(); 
    }); 
    return false; 
} 

if(isset($_POST['chat'])) { 
    $message = mysql_real_escape_string($_POST['message']); 
    $time = time(); 
    $userid = $user_class->id; 
    $result1 = mysql_query("INSERT INTO `newchat` (posted, posterid, message,extraid) VALUES ('" . $time . "', '0', '".$message."','" . $userid . "')") or die(mysql_error()); 

} 
<form method='post' action='chat.php' id="chat"> 
      <div class='chatwrap'> 
       <div class='chatlog'> 

       </div> 

      </div> 
      <div style='width:600px;margin:0 auto;padding: 5px'> 
       <input type='text' class='w400' name="message" value placeholder="Type message here..." /> <input type="submit" onclick="dopost();" name="chat" /> 
      </div> 
     </form> 

나는 온 클릭이 게시하지 않습니다에 false를 돌려 추가 할 경우에도, 사람이에 대한 해결책을 찾을 수 있습니까? 대단히 감사하겠습니다.

답변

1

그대로, returndopost 인 것은 이벤트 수신기에서 벗어나지 않습니다. 사용중인 단지 또는

onclick="dopost();" 

onclick="return dopost();" 

을 변경하려면 스타일이 문제를 해결하려면, 당신은 addEventListener 또는 원하는 방법을 통해 직접 청취자로서 dopost를 추가해야합니다.

-1

Jquery를 이미 사용하고 계시다면 Jquery에서 $ .post를 보시고 sugest를 사용하겠습니다. Ajax 호출을 사용합니다. 간단히 말해서, 귀하의 웹 페이지는 게시물을 사용하여 데이터를 보내지 만 동일한 페이지에 머물러 있으면이 게시물이 완료되면 콜백 기능을 사용하여 조치를 취할 수 있습니다.

0

어쨌든 dopost() 기능이 필요한 이유는 무엇입니까? 매우 중복됩니다. 리스너를 사용하면 충분하다 :

var request; 
    $("#chat").submit(function (e) { 
     e.preventDefault(); 
     ... 
    }); 
: 당신의 JS에

<input type="submit" name="chat" /> 

: 당신의 HTML에

http://jsfiddle.net/L9Kfg/

관련 문제