不支持PHP json_解码,有其他选择吗?
正如标题所述,我的托管提供商不支持json_decode,因此我需要找到一种方法来调整我的代码以实现相同的效果,但不使用json,下面是我的代码 jQuery:不支持PHP json_解码,有其他选择吗?,php,jquery,ajax,json,Php,Jquery,Ajax,Json,正如标题所述,我的托管提供商不支持json_decode,因此我需要找到一种方法来调整我的代码以实现相同的效果,但不使用json,下面是我的代码 jQuery: var allLocations = []; $(".locations").each( function(i, location) { // for each location block location = $(location); var loc = {
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对象,然后通过$.ajax
发送到一个PHP文件,但是现在由于JSON\u decode
不起作用,我需要尝试找到另一种解决问题的方法,我想尝试将一个关联数组传递给php文件,但我想看看您的人的输入是什么,以及是否有更好的方法来实现所需的结果
先走一步 对于5.2之前的PHP版本(其中包括json_*),有一种json_*解码的替代实现。我刚才做的一个项目打过电话,效果很好
或者看看一些PEAR包,例如..您仍然可以使用JSON。有几个编码器/解码器库没有您提到的扩展名。例如:
- 服务(JSON):
- Zend_JSON:
就是你要找的。似乎是php配置文件中的一个模糊设置干扰了json\u解码,一旦我禁用了它,一切正常,谢谢你的帮助!我将尽快编辑此答案,以描述我是如何使其工作的。在转向其他实现之前,我会尝试询问托管提供商是否以及何时计划升级到5.2。也许有礼貌地问一下,是否有可能加快处理速度,而PHP二进制文件之外的json(例如PHP脚本库中的json)可能会很慢而且有问题。如果我没有弄错的话,它只添加了
json_encode
函数,而不是我真正需要的json_decode
函数,有其他选择吗?当我尝试时,我得到了这个“[恶意或不正确的JSON字符串]”,但我发送的是相同的JSON字符串JSON_decode
,我假设这个类没有那么健壮。好吧,我没有遇到任何问题,但是有许多实现应该适合(见其他答案)似乎Solar和Zend框架是最好的,有什么建议吗?我不知道从哪里开始。这里有一个很好的例子:更多关于“模糊设置”的细节可能会有所帮助。
$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;