2015-11-24 3 views
0

Я пытаюсь изменить строки таблицы (img: http://imgur.com/yTpfCIc) и ПОСЛАТЬ измененные данные в файл edit.php. Я пытаюсь сделать это через jQuery. Но когда я нажимаю сохранить кнопки ничего не происходит, это объяснено JavaScript:Отправка входных данных без форм с помощью

//Getting all "Edit" buttons in the table (one for each row) 
var buttons = document.getElementsByClassName("clicker"); 

var savebutton = function(id){ 
    //Alert the Id of the button to see if the function is being called, and it is. 
    alert(id); 
    //If I have any $_POST["action"] different from "update" or "edit" I should get redirected to a page apologizing, saying this cant happen. But nothing happens. (not problem with edit.php, because already tried via another way of posting from another page) 
    $.post("edit.php", { action: "test"}); 
}; 

var buttonclicked = function(e){ 
    if(e.target.textContent == "Edit") 
    {   
     //In this function I create a lot of inputs that you see in the picture and cannot be submited one at a time 
     e.target.textContent = "Cancel"; 
     var id = e.target.id; 
     var editable_elements = document.querySelectorAll("[contenteditable=false]"); 
     var sub = document.getElementById("sub"+id); 

     var j = document.createElement("input"); 
     j.setAttribute("type", "text"); 
     j.setAttribute("name", "subject"); 
     j.setAttribute("value", sub.textContent); 
     j.setAttribute("placeholder", sub.textContent); 
     j.setAttribute("style", "width: 150px"); 
     j.textContent = sub.textContent; 
     sub.innerHTML = ""; 
     sub.appendChild(j); 

     for(var k = (id*6); k < (id*6)+6; k++){ 
      var l = k; 
      var index = k -(k*id) + 1; 

      l = document.createElement("input"); 
      l.setAttribute('type',"number"); 
      l.setAttribute("style", "width: 75px"); 
      l.setAttribute("step", "0.01"); 
      if(index <= 4){ 
       l.setAttribute('name',"g"+index); 
       l.setAttribute('placeholder',"G"+index); 
       l.setAttribute("value", editable_elements[k].textContent); 
      } 
      else if(index == 5){ 
       l.setAttribute('name',"creditos"); 
       l.setAttribute('placeholder',"credits"); 
       l.setAttribute("value", editable_elements[k].textContent); 
      } 
      else if(index == 6){ 
       l.setAttribute('name',"criteria"); 
       l.setAttribute('placeholder',"criteria"); 
       l.setAttribute("value", editable_elements[k].textContent); 
      } 
      editable_elements[k].innerHTML = ""; 
      editable_elements[k].appendChild(l);} 

     //If any edit button is pressed, create a save button in the same row 
     var s = document.createElement("input"); 
     s.textContent = "Save"; 
     s.setAttribute('type',"button"); 
     s.setAttribute('value',"update"); 
     s.setAttribute("id", id); 
     s.setAttribute("name", "a"); 

     //Call the function that is supposed to POST all inputs infotmations 
     s.setAttribute("onclick", "savebutton(this.id)"); 
     var clickbutton = document.getElementById("save"+id); 
     clickbutton.appendChild(s); 

    } 
    else //save button has been clicked 
    { 
     //nothing 
    } 
}; 

//If one of those buttons is clicked call the function 
for(var j = 0; j < buttons.length; j++) 
{ 
    buttons[j].addEventListener('click', buttonclicked); 
} 

Это моя проблема ... Если вы хотите увидеть всю страницу, его здесь: http://pastie.org/10578782

ответ

1

У вас есть это комментарии в коде:

// Если у меня есть какой-либо $ _POST [ «действие»] отличается от «обновления» или «редактировать» Я должен получить перенаправлен на странице с извинениями, говоря это не может случиться. Но ничего не происходит. (Не проблема с edit.php, потому что уже пытался с помощью другого способа размещения с другой страницы)

$.post("edit.php", { action: "test"}); 

При проводке с помощью AJAX, перенаправляет не работают. Откройте инструменты разработчика в своем браузере и проверьте сетевой трафик. Я уверен, что страница edit.php отправляется в. Вы должны использовать функцию обратного вызова, чтобы проверить реакцию почтового действия и действовать соответствующим образом, например:

$.post("edit.php", { action: "test"}, function(data) { 
    //data is the response from the edit.php 
    alert(data); 
}); 

Попробуйте этот код и посмотреть, что говорит окно предупреждения. Если вы хотите «перенаправить», вы можете использовать document.location.href = 'whatever.php'; внутри обратного вызова вместо оператора alert();.

+0

Хорошо, данные оповещения отправляют мне кучу кода HTML. И когда я использую это перенаправление, он не перенаправляет меня на страницу с извинениями, а на страницу, которую я загружаю в edit.php, если '$ _SERVER [" REQUEST_METHOD "] ==" GET "'. Также я помещаю строку в edit.php: 'var_dump ($ _ POST);' И это показывает мне следующее: 'array (size = 0) empty' Но сетевой трафик говорит мне иначе: ' array (size = 1) 'action' => string 'test' (length = 4) array (size = 1) 'action' => string 'test' (length = 4) C $ 50 Финансы Извините! Неверное действие Назад Copyright © Joao Turolla' –

+0

HTML, который я получаю из оповещения (данных), является HTML, который я хочу перенаправить для права? Как мне это сделать? –

+0

HTML в переменной данных - это ответ на странице edit.php, на которую вы отправляете сообщения. Если вы хотите использовать некоторые из этого HTML-кода и отображать его, вам нужно его взять, проанализировать и ввести на страницу. Если вы хотите перенаправить, просто используйте documen.location.href = ''; для отправки браузера на другой URL. – HaukurHaf

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