2012-05-18 21 views
1

最近,我被告知需要使用對各自狀態的查詢從遠程Salesforce Counties對象讀取數據,然後動態創建一個select語句值。我的問題是這樣的:雖然我知道當我在瀏覽器中手動使用查詢時,我得到了JSON格式的數據,但是當我嘗試解析縣名時,我得到了整個迭代的空值。這是我的代碼。感謝您的任何意見/幫助,你可以給:解析遠程文件並使用JSON和JQUERY創建動態SELECT控件

<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" 
     } 
    ] 
} 

回答

0
$.each(data.records, function() { 
    console.log(this.Name); 
}); 
0

這聽起來像一個跨域問題。除非其他服務器授予您訪問權限,否則無法訪問來自其他域的JSON數據。

您可以選擇使用JSONP,但只有當遠程站點支持時纔可以。

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'); 
} 

希望這有助於它讓我永遠把它弄出來哈哈。