2016-04-12 2 views
2

Я выполняю следующий сценарий:
Когда я нажимаю кнопку, я вставляю ее в базу данных, и это работает. Но я не получаю обратную связь, если это удалось или нет (предупреждения не появятся). Но если посмотреть в моей базе данных она вставлена ​​Нет обратной связи, если sql insert удалось

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
?> 
<script type='text/javascript'>alert("<?php echo $message; ?>");</script> 
<?php } else { ?> 
<script type='text/javascript'>alert("<?php echo $message1; ?>");</script> 
<?php }          
    }  
    } 
?> 

Это кнопка и InputField я использую для вставки значения в базе данных:

<input type="text" id="number"><br> 
    <button type="button" class="btn btn-success" id="test" onclick="myAjax(number.value);">test</button> 

и это Ajax вызов:

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 

     } 

    }); 
} 
+0

Вы отметили 'AJAX', вы используете ajax или форму? (вы также открыты для SQL-инъекций с этим ..) – chris85

+0

@ chris85 Я отредактировал свой вопрос, теперь включен AJAX, и, спасибо, я должен посмотреть на подготовленные заявления, которые, я думаю :) – Nick

+0

Напишите имена файлов над вашим кодом, так что мы понимаем, что происходит – Black

ответ

0

Хорошо, так что я сделал это с обходным путем, на самом деле не как я хотели, но его работу сейчас так. В основном я обрабатывал его в функции успеха Ajax вместо файла php.

вместо этого

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
echo $message; 
} else { 
echo $message1; 
}          
    }  
    } 
?> 

И это

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 

     } 

    }); 
} 

теперь у меня есть это:

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) {}          

    } 
?> 

и это:

function myAjax(value) { 




    $.ajax({ 
      type: "POST", 
      url: 'test.php', 
      data:{action:value}, 
      dataType: 'text', 
      success: function(data) { 
      if(value > 3 && value != undefined && value != "") 
      { 
      alert("working"); 
      } 
      else 
      { 
      alert("not working"); 
      } 
       } 

     }); 
    } 
4

Верните статус на вызов AJAX, затем обработайте ответ там.

if(isset($_POST['action']) && $_POST['action'] > 3) 
    { 
    $message = 'success'; 
    $message1 = 'failed'; 
     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 
     if ($conn->query($sql) === TRUE) { 
echo $message; 
} else { 
echo $message1; 
}          
    }  
    } 
?> 

Тогда в JS:

function myAjax(value) { 


    $.ajax({ 
     type: "POST", 
     url: 'test.php', 
     data:{action:value}, 
     dataType: 'text', 
     success: function(data) { 
      alert(data); 
     } 

    }); 
} 

Также смотрите в использовании подготовленных заявлений, http://php.net/manual/en/pdo.prepared-statements.php, чтобы избежать инъекций SQL.

+0

Вместо того, чтобы публиковать свой собственный ответ, я продолжу это.На самом деле это правильный ответ, и причина, по которой он не работает, заключается в том, что jQuery не запускает сценарии, возвращаемые в HTML-методах AJAX. – aaronofleonard

+0

@ chris85 Спасибо, что сработал :) Как я могу предупредить сообщение или сообщение1? потому что теперь он предупреждает всю страницу или что-то еще? – Nick

+0

И я не вижу эха – Nick

1

Это потому, что ваш успех ajax ничего не делает.

В PHP:

if ($conn->query($sql) === true) { 
    echo "Success"; 
} else { 
    echo "Failure"; 
} 

В JS:

$.ajax({ 
    type: "POST", 
    url: 'test.php', 
    data: {action:value}, 
    dataType: 'text', 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

Эхо не работает :( – Nick

1

Последние} не будет закрывать любой блок кода в вашем примере. if не нужно === TRUE, просто если ($ conn-> query ($ sql)), если обратная связь запроса верна, if будет true.

что-то вроде этого:

<? 
    if(isset($_POST['action']) && $_POST['action'] > 3) { 

     $conn = new mysqli($servername, $username, $password, $dbname); 
     $values = $_POST['action']; 
     $status = 'pending'; 
     $sql = "INSERT INTO queue (value, status) VALUES ('".$values."', '".$status."')"; 

     if ($conn->query($sql)) { 
      echo 'succes'; 
     } else { 
      echo 'fail';   
     }          
    }  

    ?> 

и ваши JS, как:

function myAjax(value) { 


     $.ajax({ 
      type: "POST", 
      url: 'test.php', 
      data:{action:value}, 
      dataType: 'text', 
      success: function(data) { 
       alert(data); 
      } 

     }); 
    } 
Смежные вопросы