2010-09-14 57 views
3

作为标题指定,我的托管服务提供商不支持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提前!

+2

在转向替代实现之前,我会试着询问主机提供商是否以及何时计划升级到5.2。也许有礼貌地问,是否可以加速这个过程 – 2010-09-14 10:17:54

+0

而PHP之外的二进制文件(例如PHP脚本库)中的json可能会很慢且很麻烦。 – 2010-11-05 08:37:33

回答

0

似乎这是一个在php配置文件中与json_decode混淆的晦涩设置,一旦我禁用了它,一切正常,Thanx为您的所有帮助家伙!我会尽快编辑这个答案来描述我是如何工作的。

+3

有关“隐蔽设置”的更多详细信息可能会有帮助。 – Matthieu 2011-10-14 14:38:49

1

对于早于5.2的PHP版本(其中包含json_ *),有一个json_decode的替代实现。它叫jsonwrapper,对于我刚才做的一个项目来说效果很好。

或者查看一些PEAR包装,例如, Service_JSON

+0

如果我没有弄错,它只添加'json_encode'函数,而不是'json_decode'函数,这是我真正需要的,任何替代方法? – Odyss3us 2010-09-14 10:19:16

+0

哎呀,你是对的。然后看看Service_JSON。 – halfdan 2010-09-14 10:22:12

1

你仍然可以使用JSON。有几个编码器/解码器库没有你提到的扩展名。例如:

等。看看json.org

+0

似乎太阳能和Zend框架是最好的,包括它们的任何建议?我不知道从哪里开始。 – Odyss3us 2010-09-14 11:17:27

+0

这里有一个很好的例子:http://thecodecentral.com/2007/09/13/easy-json-encodingdecoding-in-php – Timo 2010-09-14 12:33:04

0

This是你在找什么。

+0

当我尝试得到这个“[恶意或不正确的JSON字符串]”,但我发送的是相同的JSON字符串'json_decode',我假设这个类不如健壮。 – Odyss3us 2010-09-14 11:06:09

+0

好吧,我没有遇到任何问题,但有很多应该适合的实现(请参阅其他答案) – Thariama 2010-09-14 11:45:44

相关问题