如何在Ajax响应中使用php获取编码的json的值?

时间:2018-09-28 09:51:08

标签: javascript php ajax

echo json_encode(array('out' => $out, 'total' => $total ));

嗨,我正在使用上述PHP代码获取以下JSON数据。

var result = {"out":"[{\"tax\":\"SGST@9%\",\"percent\":7.75},{\"tax\":\"CGST@9%\",\"percent\":7.75},{\"tax\":\"SGST@2.5%\",\"percent\":3.11},{\"tax\":\"CGST@2.5%\",\"percent\":3.11}]","total":210}

我需要将元素放在单独的变量中,如下所示

var out = [{"tax":"SGST@9%","percent":7.75},{"tax":"CGST@9%","percent":7.75},{"tax":"SGST@2.5%","percent":3.11},{"tax":"CGST@2.5%","percent":3.11}];
var total = 210;

到目前为止,我尝试使用以下代码。

result = JSON.stringify(result);
result = result.replace(/\\/g, "");
var obj3 = JSON.parse(result);
alert(obj3[0]);

但是我没有得到任何输出。

3 个答案:

答案 0 :(得分:0)

基本问题是$out是以JSON开头的(因此最终进行了双重编码),但是在上下文中以JSON表示是没有意义的。

您可以在将更广泛的数组转换为JSON之前将其转换为PHP数据结构:

$out = json_decode($out, true);
$json = json_encode(array('out' => $out, 'total' => $total ));
echo "var result = $json;";

如果您不想使用PHP,则可以使用JavaScript解决该问题:

$out = json_decode($out, true);
$json = json_encode(array('out' => $out, 'total' => $total ));
echo "var result = $json;";
?>
var out_json = result.out;
var out = JSON.parse(out_json);

答案 1 :(得分:-1)

在Ajax设置中,添加myTuple = (1, 2, 3, *anotherlist)

tuple()

然后在您的成功功能中,

JSON

答案 2 :(得分:-1)

尝试一下

 result = result.replaceAll("\\\\", "");

代替

result = result.replace(/\\/g, "");