1

最近、それぞれの State に対するクエリを使用してリモートの Sales Force Counties オブジェクトから読み取り、select ステートメントのこれらの値を動的に作成する必要があることを知らされました。私の問題は次のとおりです。ブラウザーでクエリを手動で使用すると、JSON 形式のデータが取得されることはわかっていますが、郡名を解析しようとすると、反復全体で ​​null 値が取得されます。これが私のコードです。あなたが与えることができるアドバイス/ヘルプをありがとう:

<script language="JavaScript">

function getCounties(chosenState){

var url = "https://api.url=1&action=query/?q=SELECT Name FROM US_Counties__cWhere     State_Name__c =";
url = url + "'"+chosenState+"'";
alert(url);
$.getJSON(url, 
function(data) {
console.log(data)

    var options = '';
    $.each(data.records[0], function(i,item){

        options += '<option value="' + item.attributes.url + '">' + item.attributes.Name + '</option>';
    });
    $("select#counties").html(options);
});
}
 </script>  

そして、ここにデータの一部があります:

{
    "totalSize": 36,
    "done": true,
    "records": [
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJLMA2"
            },
            "Name": "Baker"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJMMA2"
            },
            "Name": "Benton"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJNMA2"
            },
            "Name": "Clackamas"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJOMA2"
            },
            "Name": "Clatsop"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJPMA2"
            },
            "Name": "Columbia"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJQMA2"
            },
            "Name": "Coos"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJRMA2"
            },
            "Name": "Crook"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJSMA2"
            },
            "Name": "Curry"
        },
        {
            "attributes": {
                "type": "US_Counties__c",
                "url": "/services/data/v20.0/sobjects/US_Counties__c/a1FR00000034BJTMA2"
            },
            "Name": "Deschutes"
        }
    ]
}
4

3 に答える 3

1

個人的なプロジェクトでクロスサイト実行を有効にするために私が行ったことは、これを行うことです

    if ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') === FALSE)
        die('You shouldn\'t be here');

    header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
    header('Access-Control-Max-Age: 1000');
    header('Access-Control-Allow-Headers: Content-Type');

もう少し安全にしたい場合は、そうすることができます

    if ((isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') === FALSE)
        die('You shouldn\'t be here');

switch($_SERVER['HTTP_ORIGIN']){
case 'domain.com':
case 'whatever.com':
        header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN']);
        header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
        header('Access-Control-Max-Age: 1000');
        header('Access-Control-Allow-Headers: Content-Type');
}

これが、それを理解するのに永遠にかかったのに役立つことを願っています笑。

于 2012-05-18T17:06:21.900 に答える
0
$.each(data.records, function() {
  console.log(this.Name);
});
于 2012-05-18T16:38:16.733 に答える
0

これはクロスドメインの問題のようです。他のサーバーがアクセスを許可しない限り、別のドメインから JSON データにアクセスすることはできません。

代わりに JSONP を使用することもできますが、これもリモート サイトでサポートされている場合に限られます。

于 2012-05-18T16:41:42.357 に答える