2015-12-11 2 views
0

Надеюсь, это будет последний вопрос, который я делаю сегодня вечером, это действительно раздражает. Я, наконец, нашел способ заставить этот Ajax работать над обработкой HTML-формы с использованием двух отдельных скриптов PHP, это просто способ, который лучше всего подходит для меня, я думаю. Я опубликую все сценарии, чтобы немного упростить задачу.Ajax работает над формой, но не публикует переменные данные

Вот форма (messages.php):

<form action="" method="post" id="reply" name="reply"> 
<div class="form-group"> 
<textarea class="form-control" rows="3" cols="80" id="message" name="message" placeholder="Send a reply..."></textarea> 
<input type="hidden" id="conversation_id" name="conversation_id" value="<? echo $co_conversation_id; ?>"> 
<input type="hidden" id="sarssystem" name="sarssystem" value="<? echo $sarssystem; ?>"> 
</div> 
<div class="form-group" align="right"> 

<div class="btn-group" align="left" style="float:left"> 
    <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
    <span class="glyphicon glyphicon-cog" aria-hidden="true"></span> <span class="caret"></span> 
    </button> 
    <ul class="dropdown-menu"> 
    <li><a href="messages.php?convoid=<? echo $co_conversation_id; ?>&del=check">Delete Conversation</a></li> 
    <li><a href="#">Visit Profile</a></li> 
    <li><a href="#">Report User</a></li> 
    <li role="separator" class="divider"></li> 
    <li><a href="#">Change Display Photo</a></li> 
    </ul> 
</div> 

    <button type="reset" class="btn btn-default btn-sm">Cancel</button> 
    <button type="submit" id="reply" name="reply" class="btn btn-primary btn-sm" onclick="loadDoc()">Send Message</button> 
</div> 
</form> 

Вот Ajax (messages.php):

<script> 
function loadDoc() { 
    $.ajax({ 
      url: 'system/message_system.php', 
      type: 'POST', 
      dataType: 'json', 
      data: { 
       message: 'message', 
       conversation_id: 'conversation_id', 
       sarssystem: 'sarssystem', 
       user_id: 'user_id' 
       }, 
     }) 
     .done(function() { 

      $.ajax({ 
       url: 'system/sars_system.php', 
       type: 'POST', 
       dataType: 'json', 
       data: { 
        message: 'message', 
        conversation_id: 'conversation_id', 
        sarssystem: 'sarssystem', 
        user_id: 'user_id' 
        }, 
      }) 
      .done(function() { 
       console.log("success"); 
      }) 
      .fail(function() { 
       console.log("error"); 
      }) 

     }) 
     .fail(function() { 
      console.log("error"); 
     }) 
} 
</script> 

Я использую этот же скрипт в качестве теста на обоих (система/sars_system.php) и (message_system.php):

require 'db.php'; 

    $message = $_POST['message']; 
    $conversation_id = $_POST['conversation_id']; 
    $sarssystem = $_POST['sarssystem']; 
    $user_id = $_POST['user_id']; 

$usr_message = str_replace("'","\\'",$message); 

mysqli_query($conn,"INSERT INTO ap_messages (message_id, message, sender_id, time_sent, time_read, conversation_id) 
VALUES ('','$usr_message','$user_id', NOW(), NOW(), '$conversation_id')"); 

mysqli_query($conn, "UPDATE ap_conversations SET time = NOW() WHERE conversation_id = '$conversation_id'"); 
echo json_encode('success'); 

Это прекрасно работает и, кажется, бежит хорошо, хотя я получаю пустой Рез в MySQL, где переменные данные должны быть, и я не знаю, почему.

Причина, по которой я использовал Ajax в том, как у меня есть, потому что это был единственный вариант, который действительно работал по какой-то причине? Поэтому я не уверен, что это связано с проблемой - обратите внимание, что я буквально понятия не имею, как использовать Ajax, я все еще участвую.

Если у кого есть идеи, почему данные не публикуются, было бы здорово, что вам нужна ваша помощь! Благодаря!

+0

[Ваш сценарий под угрозой для SQL Injection Attacks.] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+0

Если вы посмотрите в своих журналах ошибок, вы увидите, почему ваши запросы не работают, если вы не хотите добавлять проверку ошибок к запросам в ваших PHP-скриптах. Вы просто * предполагаете, что ваши запросы хороши. –

+0

Представьте, я положил ''; DROP DATABASE; - 'в поле сообщения !! – worldofjr

ответ

0

Ваш ВСТАВИТЬ запрос со ссылкой на "$ usr_message"

mysqli_query($conn, 
    "INSERT INTO ap_messages (
message_id, message, sender_id, time_sent, time_read, conversation_id) 
VALUES ('','$usr_message','$user_id', NOW(), NOW(), '$conversation_id')"); 

Вы читаете от $ POST, как

$message = $_POST['message']; 

Измените выше

$usr_message = $_POST['message']; 
Смежные вопросы