2015-04-06 3 views
1

Я использую следующую формупочему данные не передаются от Аякса PHP

<form id="dataForm" method="post"> 
    <h2 id="formheader"> Update Description</h2> 
    <div> 
     <label>Product Name:</label> 
     <input class="inputForm" id="orginalName" type="text" name="Name"> 
    </div> 
    <div> 
     <label>New Description:</label> 
     <input class="inputForm" id="newDescription" type="text" name="description"> 
    </div> 
    <div id="theSubmit"> 
     <button id="editDesButton">Submit</button> 
    </div> 
    </form> 
</section> 

и следующие функции яваскрипта

function editDescription(){ 
    xmlhttp = new XMLHttpRequest(); 
    var name = document.getElementById("orginalName"); 
    var Description = document.getElementById("newDescription"); 

    var data_seen = false; 
     // this is a flag to record whether any data has been seen. Used in the guard ofthe alert statement. 
    if (name.value !="" && Description.value !=""){ 
     data_seen = true; 
     xmlhttp.open("POST","editDescription.PHP",true); 
     xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
     xmlhttp.send("Name=" + name.value + "&Description=" + Description.value); 
    } 
    if (!data_seen) { 
     alert("please enter some data"); 
    } 
    } 

submitButton = document.getElementById("editDesButton"); 
submitButton.addEventListener("click", editDescription); 

и этот маленький кусочек PHP

$Name = $_POST['Name']; 
    $Description = $_POST['description']; 

    if($Name !="" && $Description !=""){ 
    $sql = "UPDATE PRODUCTS SET P_Description = '$Description' WHERE P_NAME = '$Name'"; 
    $conn->exec($sql); 

Если я запустил форму и воспользуюсь action="editDescription.php, тогда sql будет запущен, и таблица будет обновлена ​​до того, как я захочу, но затем, когда Я запускаю javascript в событии, когда нажата кнопка, значения не передаются, и я не понимаю, почему, у кого есть какие-то указатели?

+0

Вы видите какую-либо ошибку JS в консоли? – Diptendu

+0

"if() {"? Вы должны использовать консоль javascript (ctrl + maj + j в Chrome) –

+1

Форма отправляет, и вы используете другой случай для ключей данных и переменных POST? – adeneo

ответ

0

Когда вы используете функцию отправки, браузер urlencode сам (правильно) поля. В коде js вы не указываете urlencoding. В большинстве случаев, если вы вводите пробел в поле или любой другой символ, который должен быть закодирован, он потерпит неудачу. Во-вторых, в строке ниже вы должны использовать строчный «d» для своего поля «description». PHP чувствителен к регистру. (Я рекомендую вам всегда использовать строчные имена полей, чтобы избежать ошибок)

попробовать:

xmlhttp.send(encodeURI("Name=" + name.value + "&description=" + Description.value)); 

Может есть больше проблем. Как сказал Пьер Эммануэль, используйте консоль javascript, особенно на вкладке «Сеть», чтобы точно отслеживать, что вы отправляете по кабелю. Вы также можете посмотреть, что такое PHP-получение с помощью var_dump($_POST);. (Или var_dump(file_get_contents("php://input"));, если первая команда не в состоянии.)

0

Изменить яваскрипт кода JQuery:

function editDescription(){ 
var name = $('#orginalName').val(); //getting input field value 
var description= $('#newDescription').val(); //getting input field value 
$.ajax({//create an ajax request to Your.php 
type: "POST", 
url: "Your.php", //your php file name 
data:{"name ":name,"description":description}, 
success: function(data) { 
    if (data) { 

     alert(data); 
    } 
    else { 
     alert('Successfully not posted.'); 
    } 
} 
}); 
} 
submitButton = document.getElementById("editDesButton"); 
submitButton.addEventListener("click", editDescription); 

Your.php

$Name = $_POST['name']; 
$Description = $_POST['description']; 

if($Name !="" && $Description !=""){ 
$sql = "UPDATE PRODUCTS SET P_Description = '$Description' WHERE P_NAME = '$Name'"; 
$conn->exec($sql); 
Смежные вопросы