这就是我要做的。
我有一个文本区域输入框,我想在那个文本区域框中输入这样的数组格式的数据
'key1'='value1'
'key2'='value2'
'key3'='value3'
然后我想获取这些数据并在我的 ajax 调用中使用它,就像这样
var a = $("textarea#array_box").val().split(''n');
$.ajax({
url: 'index.php/controller/function',
type: "POST",
data: a,
success: function(data) {
console.log(data);
我正在尝试获取要传入的数据,以便在控制器中,如果我执行下面的返回语句之一,我将获得结果输出。
return $_POST['key1'] // should return 'value1'
return $_POST['key2'] // should return 'value2'
return $_POST['key3'] // should return 'value3'
如何对此进行编码,以便我可以在我的文本区域框中键入一个数组,并将该数组作为 $_POST 传递到我的控制器中?
根据你的代码,你可以做这样的事情:
<?php
$tempvar=$_POST['data'];
$result = array();
foreach($tempvar as $tempitem){
$tempitem=str_replace("'","",$tempitem); //we get rid of the ' symbols
$t=explode("=",$tempitem); //' divide them by the "=" symbol
$result [$t[0]]=$t[1];
}
//the result variable now holds the array
echo $result['key1'] // value1
?>
您可以使用
.filter(Boolean)
从数组中删除空元素a
; $.each()
迭代数组a
,.trim()
删除空格字符,.replace()
RegExp
/=(?=')/
将=
替换为:
; RegExp
/'/g
将'
替换为"
;创建一个字符串以在每次迭代时连接字符串; JSON.stringify()
以下$.each()
;将JSON.stringify()
的结果作为数据传递给JSON.parse()
POST
$("button").click(function() {
var a = $("textarea#array_box").val().split("'n").filter(Boolean);
var textareaData = "";
$.each(a, function(key, value) {
textareaData += value.trim()
.replace(/=(?=')/, ":")
.replace(/'/g, '"')
+ (key < a.length - 1 ? "," : "");
});
textareaData = JSON.stringify("{" + textareaData + "}");
console.log(textareaData);
$.ajax({
url: "/echo/json/",
type: "POST",
data: JSON.parse(textareaData),
success: function(data) {
console.log(data);
}
});
});
JSFIDDLE https://jsfiddle.net/ahnegop3/3/
ajax 数据格式必须{key:value,key,value}
。所以要获得这种格式,你需要用$.each
做一个小循环,并像这样分配键和值
对象[键] = 值
var a = $("textarea#array_box").val().split(''n');
var temp = [];
$.each(a,function(i,v){
s = v.split("="); //split again with =
s[0] = s[0].replace(/'/g,""); //remove ' from string
s[1] = s[1].replace(/'/g,"");
temp.push(s[0],s[1]);
});
a = {};
//creating data objects
$.each(temp,function(i,v){
if(i % 2 == 0){
a[temp[i]] = temp[++i];
}
});