0

どうすればこれを回すことができますか:

<? echo json_encode($myArrays); ?>

...これに:

_rowData: [
    { name: "Most Recent", view: "recentView" }, 
    { name: "Most Popular", view: "popularView" }, 
    { name: "Staff Picks", view: "staffView" }
],

私のスクリプトは ^ を返しますが、データを文字列に入れる方法がわかり_rowDataません。PS私はダッシュコードを使用しており、アイテムをリストコントローラーに動的にロードしようとしています

これまでのところ、私はこれを持っています:

var recentListControllerXHR = $.ajax("http://tarnfeldweb.com/applewebapps/ajax/recentApps.php", function(data){
                            return(JSON.stringify(data));
                          }, 'text');

rowData: recentListControllerXHR,
4

5 に答える 5

1

これを試して:

var rowData;
$.getJSON("http://tarnfeldweb.com/applewebapps/ajax/recentApps.php", function(data) {
    rowData = data;
});

ただしrowData、コールバック関数 ( getJSONcall の 2 番目のパラメーターを参照) が呼び出されるまで使用できないことに注意してください。

于 2009-12-28T18:23:17.013 に答える
1

わかりました - あなたの問題は、非同期 API の仕組みを誤解しているようです。$.ajax()リクエストを作成し、将来のある時点で、提供されたコールバックをレスポンスで呼び出します。

ポピュレートしているオブジェクトの名前があると仮定すると、次のようなものを使用して目的のプロパティを入力できます。

var someObject = {
  ...
  rowData: null,
  ...
};

// at this point, someObject is incomplete...

$.getJSON("http://tarnfeldweb.com/applewebapps/ajax/recentApps.php", 
  function(data)
  {
    // called whenever the server gets around to sending back the data
    someObject.rowData = data;
    // at this point, someObject is complete.
  });

ここでは、JSON に対する jQuery の組み込みサポートを使用していることに注意してください。必要に応じて、代わりに json.org ライブラリを使用できますがgetJSON()、データの解析時に特別なニーズがない場合はむしろ便利です。

于 2009-12-28T18:24:03.077 に答える
1

質問は本質的に別の方法を使用してすでに回答されていますが、方法ではなく$.ajax方法を使用することに興味がある場合は、次の$.getJSONようにします。

var rowData;
$.ajax({
    url: "http://tarnfeldweb.com/applewebapps/ajax/recentApps.php",
    type: 'get',
    dataType: 'json' // could also be 'jsonp' if the call is going to another site...
    success: function(data){
        rowData = data; 
    }
});

別のオプション、それだけです...

于 2009-12-28T19:03:28.947 に答える
0

仕組みを理解していないようです$.ajax(誰も理解していないようです)。

$.ajaxは非同期関数であり、何も返さないことを意味します。データが受信されたときに、後で呼び出される関数を準備するだけです。

コードは次のようになります。

var obj = {
 ...
 _rowData: [],
 ...
};

$.getJSON("http://tarnfeldweb.com/applewebapps/ajax/recentApps.php", function(data)
{
    // Now data contains your row data, 

    // you can either fill the global object
    obj._rowData = data;
    doSomethingWith(obj);

    // or use data directly
    doSomethingWith({
        ...
        _rowData: data
        ...
    });  
});

// Note that code below will be executed before the AJAX data is received
于 2009-12-28T18:27:38.857 に答える
0

関数は、成功した応答でデータを返します。コールバック関数を宣言しました:

function(data){
    return(JSON.stringify(data));
}

したがって、「データ」には、コンテンツ タイプを text/json (または application/json - 頭の中で覚えていません) として宣言し、JSON をレンダリングする場合、要求から返されたデータが含まれます。応答のテキストとして、あなたは良いはずです。

おそらくやりたいことは、関数に変数をrowDataとして宣言させ、そこから移動させることです。したがって、次のようにします。

function(rowData){
    // do something with the rowdata
}

データをテキストとして書き出そうとしない限り、stringify メソッドが必要だとは思えません。

于 2009-12-28T18:23:52.407 に答える