不支持PHP的json_decode,有没有其他的选择?
作为标题指定,我的托管服务提供商不支持json_decode,所以我需要找到一种方法来适应我的代码以达到相同的效果,但不使用JSON,这里是我的代码,不支持PHP的json_decode,有没有其他的选择?
jQuery:
var allLocations = [];
$(".locations").each(function(i, location) {
// for each location block
location = $(location);
var loc = {
'province' : $("select[data-loc*='province']", location).val(),
'town' : $("select[data-loc*='town']", location).val()
};
allLocations.push(loc);
});
//POST the locations information
$.ajax({
type: 'POST',
url: 'locations.php',
dataType: 'json',
data: { locations: JSON.stringify(allLocations), uid: uid },
success: function(data){
//alert(data)
}
});
PHP:
$json = $_POST['locations'];
$uid = $_POST['uid']; // $json is a string
$json_array = json_decode($json, true);
mysql_connect('localhost','user','pass') or die(mysql_error());
mysql_select_db('eskom_products') or die(mysql_error());
//insert the locations into the database
while($json_array as $key){
$query = mysql_query("INSERT INTO suppliersLocations (supplier_id, province, town) VALUES('".$uid."', '".$key['province']."', '".$key['town']."') ") or die(mysql_error());
}
echo $text;
因此,大家可以看到,我得到每个位置的省和城市价值与它创建一个JSON对象,然后我通过$.ajax
欢送到PHP文件,但现在因为json_decode
不起作用,所以我需要尝试找到解决问题的另一种方法,我正试图将关联数组传递给php文件,但我想知道您的人的输入是什么,如果可能有更好的方法来达到预期的效果。
Thanx提前!
似乎这是一个在php配置文件中与json_decode混淆的晦涩设置,一旦我禁用了它,一切正常,Thanx为您的所有帮助家伙!我会尽快编辑这个答案来描述我是如何工作的。
有关“隐蔽设置”的更多详细信息可能会有帮助。 – Matthieu 2011-10-14 14:38:49
对于早于5.2的PHP版本(其中包含json_ *),有一个json_decode的替代实现。它叫jsonwrapper,对于我刚才做的一个项目来说效果很好。
或者查看一些PEAR包装,例如, Service_JSON。
你仍然可以使用JSON。有几个编码器/解码器库没有你提到的扩展名。例如:
- Services_JSON:http://pear.php.net/pepr/pepr-proposal-show.php?id=198
- Zend_JSON:http://framework.zend.com/manual/en/zend.json.html
等。看看json.org
在转向替代实现之前,我会试着询问主机提供商是否以及何时计划升级到5.2。也许有礼貌地问,是否可以加速这个过程 – 2010-09-14 10:17:54
而PHP之外的二进制文件(例如PHP脚本库)中的json可能会很慢且很麻烦。 – 2010-11-05 08:37:33