0

我第一次尝试将 json 与 $.ajax() 一起使用,我将复选框的值和其他所需数据获取到 php 文件中,以便通过 $.ajax() 函数的数据部分的数组进行处理并发布到 mysqldb,但是会在我的 php 文件中得到一个空数组 []。当我尝试从浏览器中使用 javascript 调试工具时,我得到了报告

**Uncaught SyntaxError: Unexpected end of input jquery-1.9.0.min.js:1
st.extend.parseJSON jquery-1.9.0.min.js:1
(anonymous function) index.php?url=account/registration/:297
st.event.dispatch jquery-1.9.0.min.js:2
y.handle** 

我生成的数组在控制台日志中看起来像这样

 [checkbox1: "COM 101", semester: "1st Semester", mid: "7", checkbox2: "COM 112", checkbox3: "STA 111"…]

checkbox1: "COM 101"
checkbox2: "COM 112"
checkbox3: "STA 111"
checkbox4: "STA 112"
checkbox5: "MTH 111"
length: 0
mid: "7"
semester: "1st Semester"

在我的 php 处理文件中,我对 json 数据执行了 print_r,但结果得到了 Array[]

这是我的 javascript 代码块“myDataArray 是一个全局变量”

$('#mytable2').on('change',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.checked)
            if(rel === globals.payment_target && e.target.checked===true){
                myDataArray[e.target.getAttribute("name")]= e.target.value;
                myDataArray["semester"] = $("#semester").val()
                myDataArray["mid"] = $("#mid").val()

            }

            if(rel === globals.payment_target && e.target.checked ===false){
                delete myDataArray[e.target.getAttribute("name")]
                console.log(myDataArray)
            }

});
$('#mytable2').on('click',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.getAttribute('name'))
            if(rel === globals.payment_target && e.target.value =="Register"){
               console.log(myDataArray)
                var jsonstring = $.parseJSON(myDataArray);
                var myglob    =JSON.stringify(globals)
                console.log(myglob)
                $.ajax({url:'courseregistration.php',  type:'POST',data:{data:jsonstring},success: function(result){
                        $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
                        alert(result)

                    }
                })

            }

        });

这就是 php 文件的样子

$data = json_decode($_POST['data']);
print_r($data);

我只是无法弄清楚问题是什么。有人可以告诉我我这样做的方式有什么问题或提出更好的方法吗

4

3 回答 3

1

尝试设置数据类型属性json

 $.ajax({
    url:'courseregistration.php',
    type:'POST',data:{data:jsonstring},
    datatype:"json",
    success: function(result){
    $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
    alert(result)

    }
  });

还要在 php 脚本中设置内容类型。

header('Content-Type: application/json');
于 2013-08-20T06:00:56.197 回答
0

我删除了这个--- $.parseJSON(myDataArray) ---并且错误没有再次出现我使用 JSON.stringify(myDataArray) 代替。我也将 myDataArray 声明为对象而不是数组,一切顺利,它解决了Uncaught SyntaxError:问题

最初,我将 myDataArray 声明为数组

 var myDataArray  = new array();

但是当我将 myDataArray 更改为 Object

 var myDataArray  = new Object;

我如下所示,一切顺利

$('#mytable2').on('click',function(e){
            var rel = e.target.getAttribute('rel');
            console.log(e.target.value+ " "+ e.target.getAttribute('name'))
            if(rel === globals.payment_target && e.target.value =="Register"){
               console.log(myDataArray)
               console.log(globals)
                var jsonstring = JSON.stringify(myDataArray);
                console.log(myglob)
                $.ajax({url:'courseregistration.php',dataType:"json",  type:'POST',data:{data:jsonstring},success: function(result){
                        $('#putmehere').html("<h4 style='text-align:center'>"+result+"</h4>")
                        alert(result)

                    }
                })

            }

        });     
于 2013-08-21T00:42:18.130 回答
0

您的页面无法正常工作的原因是严重错误(您的第一个列表)。您需要先清除此错误,然后才能执行任何其他操作,因为您的表单没有按照您的意愿提交。

错误原因:可能是文件损坏 - 下载另一个 jQuery 副本并重试。

于 2013-08-20T05:48:26.763 回答