2015-05-31 2 views
0

, поэтому я новичок в ajax, и я столкнулся с проблемой получения всех значений из моей формы.передать массив ajax в данные:

Так я хочу вставить имя reply_txt и $ NewSID к моему столу

HTML форма:

<form> 
    <input type="hidden" name="replyToPost" value="<?php echo $newsId;?>"> 
    <textarea name="reply_txt" class="replyText"></textarea> 
    <button class="replySubmit">Answer</button> 
</form> 

АЯКС: Ithink я должен передать массив в каким-то образом в данных: replyData

$(".replySubmit").click(function(event){ 
     event.preventDefault();//prevent action from button 

     var replyData = 'reply_txt='+ $(".replyText").val(); //build a post data structure 

     $.ajax({ 
      type: "POST", // POST type 
      url: "response.php", //call ajax on page 
      dataType:"text", //type of data html/ajax/jason ... 
      data:replyData, //Form variables intups 

      success:function(response){ 
       $(".respondsReply").append(response); 
       $(".replyText").val(''); //empty text field on successful 
      }, 
      error:function (xhr, ajaxOptions, thrownError){ 
       alert(thrownError); 
      } 
     }); 
}); 

response.php: ошибка неопределенной переменной $ NewSID

if(isset($_POST["reply_txt"]) && strlen($_POST["reply_txt"])>0){ 
    $replyToSave = filter_var($_POST["reply_txt"],FILTER_SANITIZE_STRING, FILTER_FLAG_STRIP_HIGH); 
    $newsId = $_POST["replyToPost"]; 

$userId = $_SESSION['userId']; 
$reply_row = $db->query("INSERT INTO replyPost(message,newsId_fk,userId_fk) VALUES('$replyToSave','$newsId','$userId')"); 
} 
+0

Вы не каждый из ничего в php –

+0

каждый из? что? я просто хочу вставить его в свой стол, но мне нужно это в данных: я думаю, – user3426191

+0

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

ответ

2

Вы действительно можете пропускать JS объект атрибута Аякса вызова data:

$(".replySubmit").click(function(event){ 
    event.preventDefault();//prevent action from button 

    // Build the data object for ajax request: 
    var replyData = { 
     "reply_txt" : $(".replyText").val(), 
     "replyToPost": $("input[name=replyToPost]").val() 
    }; 

    $.ajax({ 
     type: "POST", // POST type 
     url: "response.php", //call ajax on page 
     dataType: "text", //type of data html/ajax/jason ... 
     data: replyData, //data object 

     success: function(response){ 
      $(".respondsReply").append(response); 
      $(".replyText").val(''); //empty text field on successful 
     }, 
     error: function (xhr, ajaxOptions, thrownError){ 
      alert(thrownError); 
     } 
    }); 
}); 

Также я надеюсь, что код в response.php предназначен только для демонстрации/тестирования! Использование значений un-escaped $ _POST в выражении SQL является Чрезвычайно опасным

+0

спасибо, я собираюсь попробовать это. И да, это только тестирование на данный момент. когда он работает, я изменю его на PDO, так как остальная часть моего кода для проекта – user3426191

+0

Это сработало, спасибо :) – user3426191

2

Вы отправляете только значение reply_txt в данные AJAX. Вы должны добавить ценность replyToPost поля в тоже:

var replyData = 'reply_txt=' + $(".replyText").val() + '&replyToPost=' + $('input[name="replyToPost"]').val(); 

В качестве альтернативы (и желательно), вы можете использовать serialize(), чтобы Jquery автоматически создать последовательную строку для вас:

$(".replySubmit").click(function(event){ 
    event.preventDefault(); //prevent action from button 
    $.ajax({ 
     type: "POST", // POST type 
     url: "response.php", //call ajax on page 
     dataType: "text", //type of data html/ajax/jason ... 
     data: $(this).serialize(), //Form variables intups 
     success:function(response){ 
      $(".respondsReply").append(response); 
      $(".replyText").val(''); //empty text field on successful 
     }, 
     error:function (xhr, ajaxOptions, thrownError){ 
      alert(thrownError); 
     } 
    }); 
}); 
Смежные вопросы