[英]How to send data multiple same name input using ajax and php
我正在嘗試為像Facebook這樣的項目創建一個投票系統。 但我需要幫助。 我使用以下JavaScript代碼來增加輸入的答案。
$("body").on("click",".createnew", function(){
$(".inputsl").append("<div class='inputt'><input type='text' name='myanswer' id='createmyanswer' class='myinput' placeholder='Write answer!'></div>");
});
當您單擊CreateNew按鈕時,可以提示用戶編寫新答案。 像這樣:
<div class="inputsl">
<div class="inputt"><input type="text" id="createmyanswer" name="myanswer" class="myinput"></div>
<div class="inputt"><input type="text" id="createmyanswer" name="myanswer" class="myinput"></div>
<div class="inputt"><input type="text" id="createmyanswer" name="myanswer" class="myinput"></div>
<div class="inputt"><input type="text" id="createmyanswer" name="myanswer" class="myinput"></div>
</div>
這樣就可以看到所有輸入名稱和ID相同。 發送一個輸入值很容易。 但是我想賦予用戶提出多個問題的權利。
為此,我使用了以下ajax代碼。
$("body").on("click",".insertp", function(){
var answers = $("#createmyanswer").val();
var dataPollAnswers = 'answers=' + answers;
$.ajax({
type:'POST',
url:'/requests/postPollAnswers',
data: dataPollAnswers,
cache: false,
beforeSend: function(){},
sucess: function(){
console.log("Success!");
}
});
});
最后想到的是postPollAnswers的php代碼。 我已使用以下php代碼發送所有創建的答案。
<?php
include_once '../inc/inc.php';
if(isset($_POST['answers'])){
$answers = mysqli_real_escape_string($db, $_POST['answers']);
if($answers){
foreach($answers as $setAnswer){
$insertAnswersfromData = $InSert->Insert_Poll($uid, $setAnswer);
}
}
}
?>
我認為我有數組問題,我已經搜索了一個解決方案並嘗試了許多想法,但是我無法發送多個答案。 我已經檢查過,也許我需要一些jquery代碼,例如serialize()等。 並嘗試,但我無法獲得任何結果。
我也收到此警告:
警告:為foreach()提供了無效的參數
有人可以幫我嗎?
只需將選擇器更改為class name
並使用serialize
dataPollAnswers = $('.myinput').serialize();
注意:id應該是唯一的
更新1:
PHP的:
foreach($_POST['myanswer'] as $row)
{ ^^^^^^^^^^
echo $row;
}
注意:輸入名稱是myanswer
答案,不是答案
更新2:
PHP
<?php
include_once '../inc/inc.php';
if(isset($_POST['myanswer'])){
foreach($_POST['myanswer'] as $setAnswer)
{
if(!empty($setAnswer))
{
$new_set_ans = mysqli_real_escape_string($db, $setAnswer);
$insertAnswersfromData = $InSert->Insert_Poll($uid, $new_set_ans);
}
}
}
?>
只需將name屬性作為數組,並且其id應該是唯一的:
var i;
$("body").on("click",".createnew", function(){
$(".inputsl").append("<div class='inputt'><input type='text' name='myanswer[]' id='createmyanswer'"+i+" class='myinput' placeholder='Write answer!'></div>");
i++;//no needed if you dont want to use id attribute
});
然后像往常一樣使用name屬性發布,您將在服務器端獲得數組。
謝謝
這是為您工作的演示:
$("#submit").click(function(){ var paramsToSend = {}; var i = 1; $("input[name='myanswer[]']").each(function(){ paramsToSend[i] = $(this).val(); i++; }); $("#dataToSend").html(JSON.stringify(paramsToSend)); $.ajax({ type: "POST", url: 'URL_HERE', data: {params:JSON.stringify(paramsToSend)}, success: function(data) { console.log("SUCCESS!!!"); } }); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="inputsl"> <div class="inputt"><input type="text" id="createmyanswer" name="myanswer[]" class="myinput"></div> <div class="inputt"><input type="text" id="createmyanswer" name="myanswer[]" class="myinput"></div> <div class="inputt"><input type="text" id="createmyanswer" name="myanswer[]" class="myinput"></div> <div class="inputt"><input type="text" id="createmyanswer" name="myanswer[]" class="myinput"></div> </div> <button id="submit"> Submit </button> <div id="dataToSend"></div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.