簡體   English   中英

無法檢查從json編碼的php數組准備的javascript json中的對象值

[英]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.

你得到怪異輸出的原因( [12等)是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM