エラーが発生したあと、ajax urlでjsonリクエストを渡すとエラーが発生します。私はajaxで200以上のデータを渡しました。すべての私のデータの "/検索/ searchendpoint" URLから来JSON値をAJAX URLに渡すとエラーが発生する
コントローラ:
$searchitem = $this->MbPriceList->find('all' , [
'fields' => [
'id',
'name' => 't1.item_name'
],
'join' => [
'table' => 'mb_item_list',
'alias' => 't1',
'type' => 'INNER',
'conditions' => [
't1.item_code = MbPriceList.item_code'
]
]
]) ->toArray();
$this->set([
'response' => $searchitem,
'_serialize' => ['response']
]);
JSON要求:
<script>
var myUrl = "/search/searchendpoint";
$.mockjax({
url: myUrl,
dataType: "json",
type: "get",
data: JSON.stringify(myUrl),
contentType: 'application/json; charset=utf-8',
response: function(data){
alert(data)
}
});
</script>
<script>
$('#search').typeahead({
ajax: '/search/searchendpoint'
});
</script>
エラー:
jquery-2.2.4.min.js:2 Uncaught TypeError: Cannot use 'in' operator to
search for 'length' in "/search/searchendpoint" at s
(jquery-2.2.4.min.js:2) at Function.each (jquery-2.2.4.min.js:2) at
isMockDataEqual (jquery.mockjax.js:67) at getMockForRequest
(jquery.mockjax.js:119) at Function.handleAjax [as ajax]
(jquery.mockjax.js:444) at Typeahead.execute
(bootstrap-typeahead.js:170) at f (jquery-2.2.4.min.js:2)
あなたの応答データが先読みが期待しているフォーマットではないと思います。実際のJSONがコントローラによってどのように生成されているかを確認すると便利です。また、どこにmockjaxが入りますか?あなたは実際のコントローラをテストしていますか?そうではありませんか? – ADyson
はい私はすでにコントローラをテストしています.jsonの値は正しく表示されます – ganesh
実際のコードの代わりにmockjaxを使用すると、この結果が発生しますか?その場合、なぜコントローラコードを表示しましたか?あなたがAjaxコールを嘲笑しているなら、それは使用されません。あなたのモックジャックスの定義にはモック結果オブジェクトが欠けているようですが、おそらくそれが問題です。 – ADyson