我想通过jquery' s $post()
发送多个base64字符串。字符串的数量并不总是相同的。我怎么能这样做并在php中获取它?
将所有字符串放在数组中并将其添加到$post()
?
var items = [
"data:image/png;base64,i.....",
"data:image/png;base64,i....",
"data:image/png;base64,i...."
] //the number od these strings varies on each post
$.post("../send.php",
{
for(i=0;i<21;i++){
'item'+i: items[i]
}
},
)
PHP:
if($_POST['item1']){
$item1 = $_POST['item1'];
}
答案 0 :(得分:2)
我会采取以下步骤:
1)创建一个包含所有这些base64字符串的输入字段的表单。 (表单及其所有字段都可以隐藏在html中) 2)在我的表单中,所有输入文本字段都可以具有相同的名称,例如
<input type="text" name="text1[]">
2)当我需要添加一个新字符串时,我将使用jQuery.append()在该表单中添加一个输入字段 3)在我的jquery帖子中,我将数据设置为
$.post('../send.php',$('#myFormId').serialize(),function(){
// what i want to do with the response
})
4)在我的php页面中,我可以轻松地循环
foreach($_POST['item1'] as $item){
// do what you want with data
}
就是这样!
答案 1 :(得分:1)
我会创建一个常规的字符串数组,然后迭代到字符串数组,并使用for
循环将它们添加为对象的属性。这是一个例子。
var items = []; // Empty array.
items.push(item1, item2, item3); // Add Base64 strings.
var postdata = {}; // An object for our postdata.
// Iterate through the array and add items as properties to the object.
for (var _i = 0, _j = items.length; _i < _j; _i++) {
postdata['item_'+_i] = items[_i]; }
// POST the object to the PHP file.
$.post("../send.php", postdata);
然后,在PHP中,从jQuery获得$_POST['item_1']
直到$_POST['item_n']
。 :)
您可以在PHP中处理postdata,如下所示。
<?php
foreach($_POST as $k => $v) {
// Do things for each item POSTED.
// This will end after the last POSTed item is reached.
// $k is the 'key', as in what's inside the square brackets of $_POST[]
// $v is the 'value', as in $_POST[key] = "THIS STUFF";
}
?>
希望这很有用!
答案 2 :(得分:1)
试试这个
JS :
$.post("../send.php",{items:items}); //send to server
PHP:
$_POST['items'] // catch in server