[英]Unable to check object values in javascript json prepared from json encoded php array
服務器端代碼
$NATIVE_TEST_TEMPLATE_IDS = array(145);
客戶端代碼將PHP數組分配給javascript-
var nativetestTemplates = "<?php echo json_encode($NATIVE_TEST_TEMPLATE_IDS); ?>"; //PHP array into JSON.
但是現在,我在這里擁有的JSON對象nativetestTemplates看起來還沒有准備好進行對象實例檢查。 我需要檢查對象nativetestTemplates中是否存在145。
以下是控制台日志的詳細信息-
nativetestTemplates.length -> 5
此外,數組的各個元素具有以下內容-
nativetestTemplates[0] -> [
nativetestTemplates[1] -> 1
nativetestTemplates[2] -> 4
nativetestTemplates[3] -> 5
nativetestTemplates[4] -> ]
因此,我做錯了什么,以及檢查對象中是否存在元素的最佳方法是什么。
更新資料
解決了Djave指出的錯誤之后,我仍然無法檢查對象nativetestTemplates中是否存在元素。
這是我的代碼-
情況1
var testAdnetworkId = $("#adnetwork_type").val(); //reading selected dropdown value
console.log("see "+$.inArray(testAdnetworkId, nativetestTemplates)+" and "+nativetestTemplates[testAdnetworkId]);
即使testAdnetworkId具有匹配值,也會返回以下內容-
see -1 and undefined
情況二
但是,如果我這樣做-
var testAdnetworkId = 145; //hardcoded integer val
我得到了$ .inArray檢查所需的輸出-
see 0 and undefined
如果情況1,則testAdnetworkId的console.dir給出了-
0“ 1”
1“ 4”
2“ 5”
但是,在情況2中,它給出-
0 145
可以,有人請說明在案例1中進行對象屬性檢查的正確方法(讀取選擇下拉列表的值)
你說的是不要用引號引起來
var nativetestTemplates = "[145]";
你想說
var nativetestTemplates = [145];
因此,您的代碼將顯示為:
var nativetestTemplates = <?php echo json_encode($NATIVE_TEST_TEMPLATE_IDS); ?>; //PHP array into JSON.
你得到怪異輸出的原因( [
, 1
, 2
等)是JavaScript是剛剛發現在陣列的開始字符 0,1,從字符串的開頭2個字符,而不是該項目 。
編輯
有趣的是,同樣的問題,您又在弄亂變量類型。 因為您正在獲取(我想像)輸入字段的val()
,所以您正在再次尋找字符串 。
console.log(typeof($("#adnetwork_type").val())); // Logs 'string'
不過不要擔心,您可以解決此問題。
var testAdnetworkId = parseInt($("#adnetwork_type").val()); //reading selected dropdown value
parseInt()
是您的朋友。 它會盡力將字符串或其他變量替換為您想要的數字。 您會在這里看到它起作用的http://codepen.io/EightArmsHQ/pen/Kjgfh 。
有關變量類型的更多信息: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Values、_variables、_and_literals
您需要按以下方式解析javascript中的json變量:
nativetestTemplates = JSON.parse(nativetestTemplates);
現在nativetestTemplates.length將為您提供正確的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.