0

こんにちは、私は phonegap アプリケーションに取り組んでおり、インターネットでデータを PHP ファイルに渡す方法を見つけました。$.getJSON()これは、JavaScript で辞書を取得したことです。

var info =[];
 if(document.getElementById(temp).checked){
          info[temp]="0";
        }
        else{
          info[temp]="1";
        } 
      }

したがって、辞書が作成されたら、それを外部のphpファイルに送信したいと思います。

var archivoValidacion = "http://mysite.com/prueba.php?jsoncallback=?";
    $.getJSON( archivoValidacion, {id_array:JSON.stringify(info)})
    .done(function(respuestaServer){
      alert(respuestaServer.validacion)});

そして、ここに私が得たphpがあります

<?php
$resultados = array();
$id_array = $_GET['id_array'];
$resultados["validacion"] = $id_array;
$resultadosJson = json_encode($resultados);


echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';

?>

問題は、ポップアップが表示されたときに空の括弧が表示されることです[]

また、通常の配列があり、それを送信すると、php のすべての配列要素を出力できるため、この方法が機能します。

アドバイスありがとう

4

3 に答える 3

0

ここで行っているのはjsonp(パディング付きのJSON)です... jsファイルでこれを試してください

var archivoValidacion = "http://mysite.com/prueba.php";
$.ajax({
    dataType:"jsonp",
    url:archivoValidacion,
    "data": {id_array:JSON.stringify(info)},
    "success": function(respuestaServer){
        alert(respuestaServer.validacion)
 }});

PHP側でも変更する必要があります

echo $_GET['jsoncallback'] . '(' . $resultadosJson . ');';

echo $_GET['callback'] . '(' . $resultadosJson . ');';
于 2013-07-10T07:11:52.617 に答える
0

いくつか変更する必要があります:

JSONは連想配列をサポートしていないため、必要な値を変更var info = [];var info = {};て割り当てる必要がありますinfo.temp = "0"

JSON.stringfy は使用しないでください。PHP スクリプトからの応答は次のようになるためです。

{"validacion":"{\"temp\":\"0\"}"}

発砲alert(respuestaServer.validacion)すると、[object Object] が表示されます。json メンバーへのより良いアクセス:alert(respuestaServer.validacion.temp)

すると、固定コードは

var info ={};
if(document.getElementById(temp).checked){
    info.temp="0";
}
else{
    info.temp="1";
} 

...

var archivoValidacion = "http://mysite.com/prueba.php?jsoncallback=?";
$.getJSON( archivoValidacion, {id_array:info})
.done(function(respuestaServer){
    alert(respuestaServer.validacion.temp)
});
于 2013-07-10T08:23:42.463 に答える
0

コールバックで何をしているのかわかりませんが、次のように試してみるべきだと思います:

info は配列ではなくオブジェクトである必要があります

var info ={};
if(document.getElementById(temp).checked){
     info[temp]="0";
} else{
     info[temp]="1";
} 

JSON.stringifyする必要はありません

var url= "http://mysite.com/prueba.php";
$.getJSON( url, {"id_array":info})
.done(function(data){
    alert(data.validacion);
});

getJSON で prueba.php を呼び出す場合、json 文字列を返す必要があります。コールバックは .done() で定義された関数です。

<?php
$r = array();
// print_r($_GET); exit; // Maybe do a print_r and stop here to see what you got in firebug
$id_array = $_GET['id_array'];
$r["validacion"] = $id_array;
echo json_encode($r);   // See what your result look like in firebug console tab 
?>
于 2013-07-10T07:46:50.257 に答える