2015-05-16 4 views
0

Так что я хочу сделать это, поэтому у меня есть опция удаления страницы в виде ссылки href. Проблема в том, что я не могу понять, как отправить данные (POST или GET) на сервер, чтобы он работал. Моя идея что-то вдоль линийОтправить форму с уникальным HREF

<li><a href="javascript:void()" id="page" name="page" value="'.$row['id'].'" onClick="DeletePage()">Delete Page</a></li> 

<script> 
function DeletePage() { 
      $.ajax({ 
      type: 'post', 
      url: 'calls.php', 
      data: $("#deletepage").serialize() + $("#page").val(), 
      success: function (data) { 
      alert(data); 
      } 
      }); 
} 
</script> 

Я процесс, установленных в виде deletepage. IE. Скрытая переменная с именем process, которая сообщает странице вызовов для запуска функции удаления. Есть ли способ сделать это? Я сделал некоторые изменения в моей форме структуры и у меня есть

foreach($resource as $row){ 
       echo "<tr>"; 
       echo "<td>".$row['id']."</td>"; 
       echo "<td>".$row['name']."</td>"; 
       echo "<td>".$row['enabled']."</td>"; 
       echo '<td><div class="input-group-btn"> 
         <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="fa fa-caret-down"></span></button> 
         <ul class="dropdown-menu"> 
         <li><a href="./editpage.php?id='.$row['id'].'">Edit Page</a></li> 
         <li><a href="#">Disable Page</a></li> 
         <li><a href="#">Enable Page</a></li> 
         <li class="divider"></li> 
         <form id="deletepage"> 
         <input type="hidden" name="process" id="process" value="deletepage"> 
         <input type="hidden" name="pageid" id="pageid" value="'.$row['id'].'"> 
         </form> 
         <li><a href="javascript:void()" id="page" name="page">Delete Page</a></li> 
         </ul> 
        </div></td>'; 
       echo "</tr>"; 

Сейчас он работает (Вид) можно удалить первую страницу, но после того, что он не принимает данные в прошлом, что и генерировать новая форма. Я думаю, что это потому, что идентификатор формы просто извлекается из первой формы с таким именем, поэтому мне нужно будет дать форме уникальное имя, а затем создать функцию ajax в цикле. . Calls.php

require_once($_SERVER['DOCUMENT_ROOT'].'/settings.php'); 
if(isset($_POST['process'])){ 
    switch($_POST['process']){ 
     case 'login': 
     $static->Login(); 
     break; 
     case 'logout': 
     session_destroy(); 
     break; 
     case 'updatepage': 
     $admin->UpdatePage(); 
     break; 
     case 'addpage': 
     $admin->AddPage(); 
     break; 
     case 'deletepage': 
     print_r($_POST); 
     break; 
    } 
} 
+0

Вы сейчас отправляете форму ... почему бы не отправить туда данные? или в URL-адресе? 'url: 'calls.php? yourvar = xxxx'' –

+0

Уверен, если у вас только один идентификатор для многообразных форм, он просто запустит первый из них, я думаю, –

+0

Я думаю, что вы правы, поэтому я думаю, что я нужно будет создать каждую форму с прикрепленным уникальным идентификатором. Затем также сгенерируйте сценарий ajax. –

ответ

1

Вы используете JQuery. Он имеет метод лучше (проще) пост(): http://api.jquery.com/jquery.post/

Там у вас есть этот пример для вызова PHP функции:

$.post("test.php", { func: "getNameAndTime" }, function(data) { 
    console.log(data.name); // John 
    console.log(data.time); // 2pm 
}, "json"); 

EDIT

Я полагаю, что это то, что вы хотите, чтобы приблизить (со всеми вместе):

$.post("test.php", { func: $("#page").val(), mydata: $("#deletepage").serialize() }, function(data) { 
     console.log(data.name); // John 
     console.log(data.time); // 2pm 
    }, "json"); 

РЕДАКТИРОВАТЬ 2 После разговора AB из некоторых форм с тем же идентификатором, может быть, что может помочь вам:

function DeletePage() { 

$("body").find(".deletePageForm").each(function(index, element){ 
     $.ajax({ 
     type: 'post', 
     url: 'calls.php', 
     data: $(element).serialize() + $("#page").val(), 
     success: function (data) { 
     alert(data); 
     } 
     }); 

    }); 
} 
+0

Извините, но это кажется довольно общим. Я понимаю, как работают ajax и jquery по большей части. Мое намерение состоит в том, чтобы взять ссылку href и использовать ее как сообщение в запросе. Страница вызовов затем запускает функцию для удаления уникального идентификатора, прикрепленного к href, для удаления страницы из базы данных. Я ценю ввод, хотя! –

+0

, но я не понимаю ... вы сейчас находитесь на странице вызовов, и теперь у вас есть скрытая переменная с именем XX, которая сообщает на странице вызовов запустить функцию удаления. Что вам нужно? я думаю, что я что-то пропустил! –

+0

Он никогда не будет перенаправлен на страницу вызовов. Страница вызовов - это страница коммутатора, которая вызывается в фоновом режиме ajax и затем отправляет уведомления на страницу. Я отправлю пример страницы звонков и, возможно, это поможет. –

0

Вы можете использовать jQuery.ajax или URL:

<li><a class="edit_page"><input type="hidden" value="' . $row['id'] . '">Delete Page</a></li> 

    <script> 
    $(".edit_page").click(function(){ 
     var page_id = $(this).find('input').val(); 
     $.ajax({ 
      type: 'post', 
      url: 'calls.php', 
      data: {id : page_id}, 
      success: function (data) { 
       alert(data); 
      } 
     }); 
    } 
    </script> 

URL

<?php echo '<li><a href="calls.php?id='.$row['id'].'">Delete</a></li>';?> 

или что-то вроде этого

foreach ($array as $row) { 
    echo '<li><a href="calls.php?id='.$row['id'].'">Delete</a></li>' 
} 
0

Конечным результатом является предоставление uniq ue для форм и сгенерировать сценарий ajax в цикле foreach. Что Законченное передавая данные, необходимые является:

 foreach($resource as $row){ 
      echo ' <script src="http://code.jquery.com/jquery-1.9.1.js"></script>'; 
       echo "<script> 
       $(function() { 
       $('#page".$row['id']."').on('click', function (e) { 
       e.preventDefault(); 

      $.ajax({ 
      type: 'post', 
      url: 'calls.php', 
      data: $('#deletepage".$row['id']."').serialize(), 
      success: function (data) { 
       alert(data); 
      } 
      }); 

     }); 

     }); 
</script>"; 
       echo "<tr>"; 
       echo "<td>".$row['id']."</td>"; 
       echo "<td>".$row['name']."</td>"; 
       echo "<td>".$row['enabled']."</td>"; 
       echo '<td><div class="input-group-btn"> 
         <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown">Action <span class="fa fa-caret-down"></span></button> 
         <ul class="dropdown-menu"> 
         <li><a href="./editpage.php?id='.$row['id'].'">Edit Page</a></li> 
         <li><a href="#">Disable Page</a></li> 
         <li><a href="#">Enable Page</a></li> 
         <li class="divider"></li> 
         <form id="deletepage'.$row['id'].'"> 
         <input type="hidden" name="process" id="process" value="deletepage"> 
         <input type="hidden" name="pageid" id="pageid" value="'.$row['id'].'"> 
         </form> 
         <li><a href="javascript:void()" id="page'.$row['id'].'" name="page'.$row['id'].'">Delete Page</a></li> 
         </ul> 
        </div></td>'; 
       echo "</tr>"; 

Я признателен за любую помощь, которая была дана, что указал мне по-разному.

+0

Неужели ты пробовал делать это без id? просто с классами? он обязательно будет полезен –

Смежные вопросы