使用JSON将Javascript数组传递给PHP
我的HTML上有2个选项,选项通过我的数据库加载,用户可以在框之间切换选项,如下所示:使用JSON将Javascript数组传递给PHP,php,javascript,json,Php,Javascript,Json,我的HTML上有2个选项,选项通过我的数据库加载,用户可以在框之间切换选项,如下所示: <select id="column1" multiple size="10" name="FromLB" style="width:150px"> <?php foreach ($result->result() as $row) { ?> <option value="<?php echo $row->id ?>">
<select id="column1" multiple size="10" name="FromLB" style="width:150px">
<?php foreach ($result->result() as $row) { ?>
<option value="<?php echo $row->id ?>"><?php echo $row->title ?></option>
<?php } ?>
</select>
在这一行
JSON = JSON.stringify(column1);
您可以重新定义本机JSON对象。请为变量使用另一个名称,这样就可以了
至于提交两个数组,只需使用一个封装对象:
data2send = JSON.stringify( { 'column1': column1, 'column2': column2 } );
除了使用递增索引将数据插入数组之外,只需使用本机方法。在这一行中
JSON = JSON.stringify(column1);
您可以重新定义本机JSON对象。请为变量使用另一个名称,这样就可以了
至于提交两个数组,只需使用一个封装对象:
data2send = JSON.stringify( { 'column1': column1, 'column2': column2 } );
除了使用递增索引将数据插入数组之外,只需使用本机方法。这里发生了一些奇怪的行为,很可能是由于JSON
变量正在覆盖浏览器的本机JSON
对象(或者在旧浏览器中由json.js
提供)
实际上,您可以将一个对象直接传递给$.ajax
,因此以下操作将起作用:
$.ajax({
url: '<?php echo base_url() . 'js_tests/update_news'; ?>',
type: 'POST',
data: column1,
success: function(){
alert("Success!")
}
});
这里发生了一些奇怪的行为,很可能是由于JSON
变量正在覆盖浏览器的本机JSON
对象(或旧浏览器中由JSON.js
提供的对象)造成的
实际上,您可以将一个对象直接传递给$.ajax
,因此以下操作将起作用:
$.ajax({
url: '<?php echo base_url() . 'js_tests/update_news'; ?>',
type: 'POST',
data: column1,
success: function(){
alert("Success!")
}
});
让jQuery完成繁重的工作:
function sort_cols(){
var col1 = [], col2 = [];
$("#column1 option").each(function() {
col1.push($(this).val());
});
$("#column2 option").each(function() {
col2.push($(this).val());
});
$.ajax({
url: '<?php echo base_url() . 'js_tests/update_news'; ?>',
type: 'POST',
contentType: "application/json",
data: JSON.stringify({
column1: col1,
column2: col2
}),
success: function(){
alert("Success!")
}
});
}
函数排序\u cols(){
var col1=[],col2=[];
$(“#column1选项”)。每个(函数(){
col1.push($(this.val());
});
$(“#column2选项”)。每个(函数(){
col2.push($(this.val());
});
$.ajax({
url:“”,
键入:“POST”,
contentType:“应用程序/json”,
数据:JSON.stringify({
专栏1:col1,
专栏2:col2
}),
成功:函数(){
警报(“成功!”)
}
});
}
让jQuery做繁重的工作:
function sort_cols(){
var col1 = [], col2 = [];
$("#column1 option").each(function() {
col1.push($(this).val());
});
$("#column2 option").each(function() {
col2.push($(this).val());
});
$.ajax({
url: '<?php echo base_url() . 'js_tests/update_news'; ?>',
type: 'POST',
contentType: "application/json",
data: JSON.stringify({
column1: col1,
column2: col2
}),
success: function(){
alert("Success!")
}
});
}
函数排序\u cols(){
var col1=[],col2=[];
$(“#column1选项”)。每个(函数(){
col1.push($(this.val());
});
$(“#column2选项”)。每个(函数(){
col2.push($(this.val());
});
$.ajax({
url:“”,
键入:“POST”,
contentType:“应用程序/json”,
数据:JSON.stringify({
专栏1:col1,
专栏2:col2
}),
成功:函数(){
警报(“成功!”)
}
});
}
您调用函数的次数是多少?当然,如果覆盖JSON
,您将无法再次字符串化
。只需调用本地变量“myData”,例如。Q:您是偶然使用jQuery的吗?是的,sRequest,正在调用jQuery。您调用函数的次数是多少?当然,如果您覆盖JSON
,您将无法再次字符串化
。只需调用您的本地变量“myData”,例如。Q:您是偶然使用jQuery的吗?是的,sRequest,正在调用jQuery。这听起来很优雅,您知道为什么它会返回一个未捕获的语法错误吗?错误:意外的标记u?-编辑:无需担心!很可能是复制/粘贴错误?我使用您的代码的重写版本进行了编辑,并做了一些其他改进(数组文字而不是new array()
,和push()
而不是手动增加变量来创建columnN
数组),所以复制/粘贴这个,你应该不会有任何问题:)编辑:刚刚看到你的“nevermind”编辑,但改进仍然有效!这是因为我还在调用json.js(愚蠢的我).感谢您提供的优雅解决方案…我越来越意识到jQuery太好了,不可能是真的!这听起来非常优雅,你知道为什么它会返回一个未捕获的Syntaxer吗?错误:意外的标记u?-编辑:无需担心!很可能是复制/粘贴错误?我使用您的代码的重写版本进行了编辑,并做了一些其他改进(数组文字而不是new array()
,和push()
而不是手动增加变量来创建columnN
数组),所以复制/粘贴这个,你应该不会有任何问题:)编辑:刚刚看到你的“nevermind”编辑,但改进仍然有效!这是因为我还在调用json.js(愚蠢的我).感谢您提供的优雅解决方案…我越来越意识到jQuery太好了,不可能是真的!