2016-02-02 6 views
0

Привет, ребята, я работаю над веб-приложением, где у меня есть меню слева, а div справа, где отображается содержимое других страниц, когда я нажимаю элементы меню, я с помощью Ajax, чтобы довести содержимое, используя этот код:Submit Button не работает в JQuery Mobile

<script> 
    $.ajax({ 
     url: "new_pm.php" 
    }).done(function(data) { 
     $("#content").html(data); 
    }); 

    $("#content").on("click", "a", function(e) { 
     e.preventDefault(); 
     var html = this.href; 
     $("#content").load(html) 
    }); 
</script> 

Вторая часть выше код, чтобы получить ссылки в содержании, но проблема в том, что он работает для ссылок и не кнопки (входы)

Здесь представляет собой код для страницы, которая загружается (new_pm.php):

<?php 
//We check if the user is logged 
if(isset($_SESSION['id'])) 
{ 
$form = true; 
$otitle = ''; 
$orecip = ''; 
$omessage = ''; 
//We check if the form has been sent 
if(isset($_POST['title'], $_POST['recip'], $_POST['message'])) 
{ 
     $otitle = $_POST['title']; 
     $orecip = $_POST['recip']; 
     $omessage = $_POST['message']; 

     //We remove slashes depending on the configuration 

      if(get_magic_quotes_gpc()) 
     {  
       //$otitle = stripslashes($otitle); 
       //$orecip = stripslashes($orecip); 
       //$omessage = stripslashes($omessage); 
     } 

     //We check if all the fields are filled 

     if($_POST['title']!='' and $_POST['recip']!='' and $_POST['message']!='') 
     { 
       //We protect the variables 

       // $title = mysqli_real_escape_string($otitle); 
       //$recip = mysqli_real_escape_string($orecip); 
       // $message = mysqli_real_escape_string(nl2br(htmlentities($omessage, ENT_QUOTES, 'UTF-8'))); 

       //We check if the recipient exists 

       $dn1 = mysqli_fetch_array(mysqli_query($link,'select count(id) as recip, id as recipid , (select count(*) from pm) as npm from users where email ="'.$orecip.'"')); 

       if($dn1['recip']==1) 

       { 
         //We check if the recipient is not the actual user 

         if($dn1['recipid']!=$_SESSION['id']) 
         { 
           $id = $dn1['npm']+1; 

           //We send the message 

           if(mysqli_query($link,'insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "1", "'.$otitle.'", "'.$_SESSION['id'].'", "'.$dn1['recipid'].'", "'.$omessage.'", "'.time().'", "yes", "no")')) 
           { 
?> 
<div class="message">The message has successfully been sent.<br /> 
<a href="list_pm.php">List of my Personal messages</a></div> 
<?php 
             $form = false; 
           } 
           else 
           { 
             //Otherwise, we say that an error occured 
             $error = 'An error occurred while sending the message'; 
           } 
         } 
         else 
         { 
           //Otherwise, we say the user cannot send a message to himself 
           $error = 'You cannot send a message to yourself.'; 
         } 
       } 
       else 
       { 
         //Otherwise, we say the recipient does not exists 
         $error = 'The recipient does not exists.'; 
       } 
     } 
     else 
     { 
       //Otherwise, we say a field is empty 
       $error = 'A field is empty. Please fill of the fields.'; 
     } 
} 
elseif(isset($_GET['recip'])) 
{ 
     //We get the username for the recipient if available 
     $orecip = $_GET['recip']; 
} 
if($form) 
{ 
//We display a message if necessary 
if(isset($error)) 
{ 
     echo '<div class="message">'.$error.'</div>'; 
} 
//We display the form 
?> 
<div class="container contentContainer" id="topContainer"> 
     <div class="row"> 

      <div class="col-md-12 " id="topRow"> 


    <form class="marginTop" action="new_pm.php" method="post"> 
       <div class="form-group required">   
     <label for="title"> Subject* </label> 
     <input class="form-control marginBottom" type="text" value="<?php echo htmlentities($otitle, ENT_QUOTES, 'UTF-8'); ?>" id="title" name="title" /><br /> 
       </div> 

       <div class="form-group required"> 
     <label for="recip">Recipient<span class="small">(UserEmail)*</span></label> 
     <input class="form-control marginBottom" type="text" value="<?php echo htmlentities($orecip, ENT_QUOTES, 'UTF-8'); ?>" id="recip" name="recip" /><br /> 
       </div> 

     <div class="form-group required"> 
     <label for="message">Message*</label> 
     <textarea class="form-control marginBottom" cols="40" rows="5" id="message" name="message"><?php echo htmlentities($omessage, ENT_QUOTES, 'UTF-8'); ?></textarea><br /> 
     <input type="submit" value="Send" class="btn btn-success"/> 
     </div> 
    </form> 
</div> 
</div> 
</div> 
<?php 
} 
} 
else 
{ 
     echo '<div class="message">You must be logged to access this page.</div>'; 
} 
?> 

Когда я нажимаю кнопку «Отправить», ничего не происходит, но когда я загружаю new_pm.php на новую вкладку и нажимаю «Отправить», она отлично работает и отправляет сообщение.

Любая идея, как заставить ее работать одинаково в div.

Действительно оцените помощь.

+0

сначала нужно отделить PHP от формы HTML и чем вам нужны данные, чтобы перейти к вашему AJAX – madalinivascu

ответ

1

Создайте файл с именем ajax.php с парованием

<?php 
//We check if the user is logged 
if(isset($_SESSION['id'])) 
{ 
$otitle = ''; 
$orecip = ''; 
$omessage = ''; 
//We check if the form has been sent 
if(isset($_POST['title'], $_POST['recip'], $_POST['message'])) 
{ 
     $otitle = $_POST['title']; 
     $orecip = $_POST['recip']; 
     $omessage = $_POST['message']; 

     //We remove slashes depending on the configuration 

      if(get_magic_quotes_gpc()) 
     {  
       //$otitle = stripslashes($otitle); 
       //$orecip = stripslashes($orecip); 
       //$omessage = stripslashes($omessage); 
     } 

     //We check if all the fields are filled 

     if($_POST['title']!='' and $_POST['recip']!='' and $_POST['message']!='') 
     { 
       //We protect the variables 

       // $title = mysqli_real_escape_string($otitle); 
       //$recip = mysqli_real_escape_string($orecip); 
       // $message = mysqli_real_escape_string(nl2br(htmlentities($omessage, ENT_QUOTES, 'UTF-8'))); 

       //We check if the recipient exists 

       $dn1 = mysqli_fetch_array(mysqli_query($link,'select count(id) as recip, id as recipid , (select count(*) from pm) as npm from users where email ="'.$orecip.'"')); 

       if($dn1['recip']==1) 

       { 
         //We check if the recipient is not the actual user 

         if($dn1['recipid']!=$_SESSION['id']) 
         { 
           $id = $dn1['npm']+1; 

           //We send the message 

           if(mysqli_query($link,'insert into pm (id, id2, title, user1, user2, message, timestamp, user1read, user2read)values("'.$id.'", "1", "'.$otitle.'", "'.$_SESSION['id'].'", "'.$dn1['recipid'].'", "'.$omessage.'", "'.time().'", "yes", "no")')) 
           { 


             $form = false; 
           } 
           else 
           { 
             //Otherwise, we say that an error occured 
             $error = 'An error occurred while sending the message'; 
           } 
         } 
         else 
         { 
           //Otherwise, we say the user cannot send a message to himself 
           $error = 'You cannot send a message to yourself.'; 
         } 
       } 
       else 
       { 
         //Otherwise, we say the recipient does not exists 
         $error = 'The recipient does not exists.'; 
       } 
     } 
     else 
     { 
       //Otherwise, we say a field is empty 
       $error = 'A field is empty. Please fill of the fields.'; 
     } 
} 
elseif(isset($_GET['recip'])) 
{ 
     //We get the username for the recipient if available 
     $orecip = $_GET['recip']; 
} 

//We display a message if necessary 
if(isset($error)) 
{ 
     echo json_encode(array("message"=>$error)); 
} else { 
     echo json_encode(array("message"=>"ok")); 
} 

} >

Следующая:?

ваша страница будет выглядеть форма например:

head 
body tag 
... 
<div class="container contentContainer" id="topContainer"> 
     <div class="row"> 

      <div class="col-md-12 " id="topRow"> 


<div class="message">The message has successfully been sent.</div><br /> 
    <form class="marginTop newclass" action="new_pm.php" method="post"> 
       <div class="form-group required">   
     <label for="title"> Subject* </label> 
     <input class="form-control marginBottom" type="text" value="<?php echo htmlentities($otitle, ENT_QUOTES, 'UTF-8'); ?>" id="title" name="title" /><br /> 
       </div> 

       <div class="form-group required"> 
     <label for="recip">Recipient<span class="small">(UserEmail)*</span></label> 
     <input class="form-control marginBottom" type="text" value="<?php echo htmlentities($orecip, ENT_QUOTES, 'UTF-8'); ?>" id="recip" name="recip" /><br /> 
       </div> 

     <div class="form-group required"> 
     <label for="message">Message*</label> 
     <textarea class="form-control marginBottom" cols="40" rows="5" id="message" name="message"><?php echo htmlentities($omessage, ENT_QUOTES, 'UTF-8'); ?></textarea><br /> 
     <input type="submit" value="Send" class="btn btn-success"/> 
     </div> 
    </form> 
</div> 
</div> 
</div> 

.. 
body tag 

следующих ваш Аякс должен выглядеть и должен быть размещен в нижней части страницы формы

$(document).ready(function(){ 
$('input[type="submit"]').on("click",function(){ 
$.ajax({ 
     url: "ajax.php" 
     data:$(this).parent('form').serialize(); 
     success:function(data) { 
      if(data.message == "ok") { 
      $('.message').text('The message has successfully been sent.'); 
      $(this).parent('form').remove(); 
      } 
      else { 
      $('.message').text(data.message); 
      } 
     } 
    }); 


    }); 
}); 

Примечания: ссылки: я приложил NewClass к форме и теперь вы можете использовать любой объект чтобы вызвать ваш Аякс

$('a').on("click",function() { 
    $.ajax({ 
      url: "ajax.php" 
      data:$('.newclass').serialize(); 
      success:function(data) { 
       if(data.message == "ok") { 
       $('.message').text('The message has successfully been sent.'); 
       $('.newclass').remove(); 
       } 
       else { 
       $('.message').text(data.message); 
       } 
      } 
     }); 


     }); 
+0

Спасибо за точный ответ, но аякс работает только в том случае, если есть кнопка отправки, и она не работает со ссылками. Можем ли мы сделать утверждение if следующим образом: – Babak

+0

вы можете сделать это со ссылками тоже см. править – madalinivascu

+1

Спасибо, много человек, да благословит Бог – Babak

0
$(document).ready(function (e){ 
$.ajax({ 
    url: "new_pm.php" 
}).done(function(data) { 
    $("#content").html(data); 
}); 

$("#content").on("click", "a", function(e) { 
    e.preventDefault(); 
    var html = this.href; 
    $("#content").load(html) 
});}); 

использовать этот код

+0

Не могли бы вы быть немного более конкретно, пожалуйста, вы имеете в виду в Ajax? или вторая часть, thx – Babak

+0

см. мои новые обновленные ан. –

+0

Не работает мой человек, тот же результат – Babak

0

Спасибо тонны для полного ответа, но Ajax работает только тогда, когда есть кнопка покориться и она не работает со ссылками, мы можем положить, если заявление внутри как это:

$(document).ready(function(){ if (input[type="submit"]) 
$('input[type="submit"]').on("click",function() 
$.ajax({ 
     url: "ajax.php" 
     data:$(this).parent('form').serialize(); 
     success:function(data) { 
      if(data.message == "ok") { 
      $('.message').text('The message has successfully been sent.'); 
      $(this).parent('form').remove(); 
      } 
      else { 
      $('.message').text(data.message); 
      } 
     } 
    }) 


    });  else ( $.ajax({ 
    url: "new_pm.php" 
}).done(function(data) { 
    $("#content").html(data); 
}); 

$("#content").on("click", "a", function(e) { 
    e.preventDefault(); 
    var html = this.href; 
    $("#content").load(html) 
}); 
}); 
Смежные вопросы