我在 Javascript 中创建一个对象作为参数传递给 PHP 脚本。
var pattern = new Object();
pattern['@id'] = '';
pattern['@num'] = '';
pattern.cprop = new Object();
//pattern.aprop = new Object();
pattern['@id'] = id;
pattern['@num'] = pn;
pattern.cprop.$ = pb.find('input[name="subject"]').val() || '';
var json = {'pattern': pattern};
我的 Ajax 调用是
url: clr_url_base+'storepat.php?data='+encodeURIComponent($.toJSON(json))
在我的 PHP 脚本中,我使用
$pat = json_decode(str_replace ('\"','"', $data), true);
$prep = $pat["pattern"]["@id"];
$sense = $pat["pattern"]["@num"];
$cprop = $pat["pattern"]["cprop"]["$"];
//$aprop = $pat["pattern"]["aprop"]["$"];
这有效,但是当我添加aprop值时,它不再有效。所有值都是字符串。关于出了什么问题的任何建议。
这是两个 JSON 字符串:
{\"pattern\":{\"@id\":\"against\",\"@num\":\"1(1)\",\"cprop\":{\"$\":\"a person or thing (often abstract) opposed\"}}}
{\"pattern\":{\"@id\":\"against\",\"@num\":\"1(1)\",\"cprop\":{\"$\":\"a person or thing (often abstract) opposed\"},\"aprop\":{\"$\":\"verbs (to which \'against\' introduces idea of opposition); nouns denoting conflict\"}}}
第一个只有cprop的值,而第二个添加了aprop的值。注意aprop有单引号。正是这种数据似乎乞求在 Javascript 中编码和在 PHP 中解码。第二个炸弹。我有来自一个表单的大约 20 个字段,因此手动创建 JSON 会变得相当复杂,而不是作为pattern中的字段。当第二次轰炸时,$pat的值为 NULL。