2013-10-07 92 views
0

我已經爲使用JSONP工作的網站構建了一個搜索。我的代碼如下:JSON-意外標識符

$(document).ready(function() { 

function pSearch() { 
    var url = "/pq2"; 

    $.getJSON(url + "?callback=?", $("#searchform").serialize(), function(data) { 
     $("#searchResults").empty(); 
     console.log(data); 
     $.each(data, function(index, value) { 
      $("#searchResults").append('<a href="[[~' + value.id + ']]"><h2>' + value.pagetitle + '</h2></a>'); 
     }) 
    }) 
} 

$("select").change(pSearch); 

}); 

用戶從多選框中選擇條件並返回符合這些條款的頁面列表。有些條款的很好地工作,別人拋出下面的錯誤在Chrome:

Uncaught SyntaxError: Unexpected identifier

我很困惑,什麼會導致一些成果的工作,和其他人拋出這個錯誤。感謝您的幫助!

編輯生成JSONP PHP文件生成一個數組,並以下線產生JSONP(CMS是鏌鋣):

$final = array(); 
foreach ($collection as $c) { 

     $allowedTvNames = array('tv_names'); 
     $templateVars = $modx->getCollection('modTemplateVar', array('name:IN' => $allowedTvNames)); 

     $a = $c->toArray(); 

     foreach ($templateVars as $tv) { 
      $a[$tv->get('name')] = $tv->renderOutput($c->get('id')); 
     } 

     $final[] = $a; 
} 

echo $_GET['callback'] . '(' . json_encode($final) . ')'; 
+1

錯誤發生在哪一行? – ComFreek

+0

我的猜測是來自php的迴應並不總是有效的jsonp。你能告訴我們如何產生響應嗎? –

+0

@KevinB當然,我已經添加了一些關於如何生成JSONP的信息。我有一種感覺,你是對的,因爲 – Vecta

回答

1

在瀏覽器中使用開發工具看JSONP響應,以確定它是否要麼是有效的,要麼是拋出某種PHP警告/錯誤。

在Chrome中,轉到查看>開發人員>開發人員工具,打開網絡選項卡,然後啓動您的JSONP請求。然後在左側窗格中選擇「/ pq2」,然後單擊右側的「預覽」或「響應」選項卡,查看響應是什麼。

如果它不是那麼明顯是什麼問題,請將它放回這裏。