这是我的jQuery代码。我在使用JSON正确格式化数据时遇到问题,请求失败。我需要做什么才能正确发送它,并能够在服务器上解码它?
$(".comment_button").click(function() {
var chkarray = [];
$('.webInput:checked').each(function(){
chkarray.push($(this).val());
});
var dataString = "content="+ chkarray;
if(test=='')
{
alert("Please check checked");
}
$.ajax({
type: "POST",
url: "chkoutput.php",
dataType:'json',
data: dataString,
cache: false,
success:
function(html)
{
$("#test_area").after(html);
document.getElementById('content').value='';
$("#flash").hide();
}
});
这是服务器端代码:
$chk_out = $_POST["content"];
echo json_encode($chk_array);
答案 0 :(得分:1)
var dataString=JSON.stringify(chkarray) ;
$.ajax({
type: "POST",
url: "chkoutput.php",
dataType:'json',
data: {"dataString":dataString},
cache: false,
success:
function(html)
{
$("#test_area").after(html.data);
document.getElementById('content').value='';
$("#flash").hide();
}
在服务器端
$chk_out = json_decode(dataString);
$data=$chk_out->data;//$data is data which you added to array or we can say
// $chk_out["data"]
答案 1 :(得分:1)
试试这个
$.ajax({
type: "POST",
url: "BACKEND.php",
timeout: 8000,
data: "var1=" + myVar,
dataType: "json",
error: function(){
$("#DIVID").html("<div class='error'>Error!</div>");
},
success: function(jsonObj){
$("#DIVID").html(jsonObj.mydata);
}
});
PHP Array:
$data['mydata'] = $myData;
或按照以下步骤
使用var st = JSON.stringify(your_object)对您的javascript对象(json)进行字符串化;
将您的POST数据作为“字符串”传递(可能使用jQuery:$ .post('foo.php',{data:st},function(data){...});
或简单的
var array = [1,2,3,4,5,6];
$.ajax({
url: "mydomain.com/url",
type: "POST",
dataType: "json",
data: {arrayName: array},
complete: function() {
//called when complete
},
success: function() {
//called when successful
},
error: function() {
//called when there is an error
},
});
答案 2 :(得分:-1)
如果你想传递数组和post方法,可以尝试使用$ .post进行同步 我已经更新了你的代码。
$(".comment_button").click(function() {
var chkarray = [];
$('.webInput:checked').each(function(){
chkarray.push($(this).val());
});
// var dataString = "content="+ chkarray;
if(test=='')
{
alert("Please check checked");
}
$.post('chkoutput.php',{dataString:chkarray },function(data){
$("#test_area").after(html);
document.getElementById('content').value='';
$("#flash").hide();
});
}
正如你所提到的,你不知道jquery首先检查javascript错误,在任何一个debuging工具,如mozila firebug或任何方便的东西,并发布它们,这样可以帮助更好。
为亲爱的评论员编辑
我应该承认道歉让大家感到困惑,我已经在var dataString上添加了评论,但即使没有评论,代码也会起作用。因为$ .post参数中的dataString不表示var dataString。它是全新对象的属性名称,它被传递给$ .post方法,所有其他东西都由$ .post函数管理。我真的很惊讶没有人甚至在责备之前尝试过或检查过。
如果你不同意只在php(name it index.php)文件中复制并粘贴下面的代码,这肯定会有效 然后单击按钮,看看会发生什么,然后问我它是如何工作的
<?php
if(!empty($_POST))
{
var_dump($_POST);exit;
}
?>
<!DOCTYPE html>
<html>
<body>
<h1>Please GET It</h1>
<script src="http://code.jquery.com/jquery-latest.min.js "></script>
<script>
function doSomething()
{ var test = ['I','am','an','array','wrong?', 'and posted as it was said on click']
$.post('index.php',{test : test},function(data) {alert(data);})
}
</script>
<button onclick="doSomething()">Click me </button>
</body>
</html>