0

我正在使用以下代码将数据从表单发送到 php 脚本,该脚本将使用类进行一些计算:

$.ajax({
    type: "POST",
    url: "test2.php",
    data: values,
    success: function(returnedData) {
        $("#result").html(returnedData);
    },
    error: function(){
        alert("failure");
        $("#result").html('error while submitting');
    }
});

我的 PHP 脚本创建了一个数组,我用 JSON 编码然后回显

$jsonString = array(
    'monthText' => $Month->getMonthText($month),
    'gross' => $formatGross,
    'net' =>  $formatNet
    );
echo json_encode($jsonString);

到现在为止还挺好。但我不太热衷于显示原始 JSON。我想在将文本写入文档之前对其进行格式化。我已经尝试过$.parseJSON()$.getJSON()但它们都不起作用。jQuery 文档说它需要一个字符串,但没有json_encode()将我的数组变成一个字符串?不是echo把它变成一个字符串吗?为什么Uncaught SyntaxError: Unexpected token {我的 jQuery 文件中出现错误?我的理论是它周围没有单引号。

我尝试header('Content-type: application/json')在我的 PHP 脚本中使用,我也尝试dataType: json在我的 AJAX POST 中使用,但没有任何效果。

我究竟做错了什么?

4

3 回答 3

4

从评论听起来你使用 json_encode 错误。将每条数据存储到一个数组中,然后对数组进行编码。

$data = array();
for($i=0;$i<$something;$++) {
   $data[] = array(
      'monthText' => $Month->getMonthText($month),
      'gross' => $formatGross,
      'net' =>  $formatNet
    );
}

echo json_encode($data);

那么你的Javascript需要是

$.ajax({
    type: "POST",
    url: "test2.php",
    dataType:"json",
    data: values,
    success: function(returnedData) {
        //returnedData will now be an array Object
        for( var i=0; i<returnedData.length; i++ ) {
           $("#result").html(returnedData[i].monthText);
        }
    },
    error: function(){
        alert("failure");
        $("#result").html('error while submitting');
    }
});
于 2013-09-30T18:42:20.533 回答
0

对于解析,使用 jQuery.parseJSON(returnedData);

于 2013-09-30T18:26:13.287 回答
0

像这样在您的 ajax 调用中添加 dataType 。

$.ajax({
    type: "POST",
    dataType:"json",
    url: "test2.php",
    data: values,
    success: function(returnedData) {
        $("#result").html(returnedData);
    },
    error: function(){
        alert("failure");
        $("#result").html('error while submitting');
    }
});
于 2013-09-30T18:30:40.443 回答