2011-01-20 7 views
4

私はデータマイニングクラスのために学校でプロジェクトを進めています。私はrawoverデータを取得するためにstackoverflow APIを使いたいと思います。 PHPにアクセスするための小さな入門チュートリアルを見ていて、最初のコード例はまったく動作していませんでした。原因はjson_decode関数でした。学校サーバーにインストールされているPHPのバージョンは5.1.6で、この関数は5.2以上しか存在しません。ここでの検索私は梨を使用したが、学校のPHPは '--without-pear'で構成されています'json_decode'またはPEARの 'Services_JSON'なしでJSONをPHPから解析する

これらの制限を回避するための最良の選択肢は何ですか?むしろ別の言語に完全に切り替える必要はありません。別の言語で外部関数を呼び出すことは可能ですか?

問題のある行は、あなたがPEARのインストールプロセスを使用せずにPEARライブラリをインストールすることができます

$response = json_decode(http_inflate(file_get_contents($url))); 
+0

あなただけの梨から必要なファイルを取得し)(それを含めることができ、あなたは梨をインストールする必要はありません。また、関数のphpマニュアルのコメントを常に読んでください。互換コードは、しばしばユーザによってリストされます。 – goat

答えて

4

ました。 PEARのWebサイト(Services_JSON)からファイルをダウンロードし、手動で組み込むだけです。

+0

ありがとうございます。それは問題の半分を解決したようだ。どうやら 'http_inflate'にはpecl_httpが必要なので、そのうちのどれかを理解できないようです。 JSON.phpの使用方法と同じように管理者権限を持たない拡張機能を使用できますか? Theres多くのファイルは、私がダウンロードしたフォルダ、ほとんどC. – Matt

0

PEARからJSONサポートを直接使うこともできます。他のPEARライブラリには依存しません。 JSON.php

0

私はJSONを使用してコードを作成したいと思っていたが、サーバー上ではPHP v 5.1.6のみだったという状況にあった。数時間かけて試してみると、私はPHPスクリプトのJSON.phpを単純に組み込み、AJAXの機能を少し変更した(私の仕事ではなく、元々Webから取得していた)ことを発見しました。

ここには両方のファイルがあり、誰かの神経を救うことを願っています。

java.js

var request; 

function runAjax (JSONString, phpScript, cfunc) { 
    if (window.XMLHttpRequest) { 
     request = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     try { 
      request = new ActiveXObject("Msxml2.XMLHTTP"); 
     } catch(e) { 
      try { 
       request = new ActiveXObject("Microsoft.XMLHTTP"); 
      } catch(e) { 
       request = false; 
      } 
     } 
    } 
    request.onreadystatechange = cfunc; 
    request.open("POST", phpScript); 
    request.setRequestHeader("Content-type", "application/json", true); 
    request.send(JSONString); 
} 

function smazVzor (id) { 
    var JSONObject = new Object; 
    JSONObject.id = id; 
    JSONString = JSON.stringify(JSONObject); 
    runAjax(JSONString, "./ajax/smaz_vzor.php", function() { 
     if (request.readyState == 4) { 
      var JSONObject = JSON.parse(request.responseText); 
      alert(JSONObject.zprava); 
      if (JSONObject.kod == 1) document.location.href = "./index.php"; 
     } 
    }); 
} 

smaz_vzor.php

<?php 
    require("../../include/dbconnect.php"); // just some commands for MySQL 
    require('../../include/JSON/JSON.php'); // <-- THIS IS IMPORTANT 
    $json = new Services_JSON(); // create a new instance of Services_JSON class 
    $str_json = file_get_contents('php://input'); // read fiel send by POST method as text 
    $decoded = $json->decode($str_json); // decode JSON string to PHP object 

    $sql = "DELETE FROM Obory_vzory WHERE id = '$decoded->id'"; 
    $response = array(); // create response array 
    if (!mysql_query($sql, $pripojeni)) { 
     $response['kod'] = 0; 
     $response['zprava'] = "Something got wrong.\nError: ".mysql_error(); 
    } else { 
     $response['kod'] = 1; 
     $response['zprava'] = "Operation successful."; 
    } 

    $encoded = $json->encode($response); // encode array $json to JSON string 
    die($encoded); // send response back to java and end script execution 
?> 
関連する問題