getJSON method of ajax gives error cannot cast to object - json
I have an external countries.json file(simply in the root folder,not inside the js folder where my ajax function lies).When I try to load the contents of countries.json using getJSON method and append it to select option of my client html.I am getting error,
error in my console:
{ CastError: Cast to ObjectId failed for value "countries.json" at path "_id" fo
r model "localuser"{ CastError: Cast to ObjectId failed for value "countries.json" at path "_id" fo
r model "localuser"
countries.json
[
{"name": "Afghanistan", "code": "AF"},
{"name": "Albania", "code": "AL"},
{"name": "Algeria", "code": "DZ"},
{"name": "Angola", "code": "AO"},
{"name": "Anguilla", "code": "AI"},
{"name": "Antarctica", "code": "AQ"},
{"name": "Argentina", "code": "AR"},
{"name": "Armenia", "code": "AM"},
{"name": "Aruba", "code": "AW"},
{"name": "Australia", "code": "AU"},
{"name": "Austria", "code": "AT"},
{"name": "Azerbaijan", "code": "AZ"},
{"name": "Bahamas", "code": "BS"},
{"name": "Bahrain", "code": "BH"},
{"name": "Bangladesh", "code": "BD"},
{"name": "Barbados", "code": "BB"},
{"name": "Belarus", "code": "BY"},
{"name": "Belgium", "code": "BE"},
{"name": "Belize", "code": "BZ"},
{"name": "Benin", "code": "BJ"},
{"name": "Bermuda", "code": "BM"},
{"name": "Bhutan", "code": "BT"},
{"name": "Bolivia", "code": "BO"},
{"name": "Bosnia and Herzegovina", "code": "BA"},
{"name": "Botswana", "code": "BW"},
{"name": "Bouvet Island", "code": "BV"},
{"name": "Brazil", "code": "BR"},
{"name": "British Indian Ocean Territory", "code": "IO"},
{"name": "Brunei Darussalam", "code": "BN"},
{"name": "Bulgaria", "code": "BG"},
{"name": "Burkina Faso", "code": "BF"},
{"name": "Burundi", "code": "BI"},
{"name": "Cambodia", "code": "KH"},
{"name": "Cameroon", "code": "CM"},
{"name": "Canada", "code": "CA"},
{"name": "Cape Verde", "code": "CV"},
{"name": "Cayman Islands", "code": "KY"},
{"name": "Central African Republic", "code": "CF"},
{"name": "Chad", "code": "TD"},
{"name": "Chile", "code": "CL"},
{"name": "China", "code": "CN"},
{"name": "Christmas Island", "code": "CX"},
{"name": "Cocos (Keeling) Islands", "code": "CC"},
{"name": "Colombia", "code": "CO"},
{"name": "Comoros", "code": "KM"},
{"name": "Congo", "code": "CG"},
{"name": "Congo, The Democratic Republic of the", "code": "CD"},
{"name": "Cook Islands", "code": "CK"},
{"name": "Costa Rica", "code": "CR"},
{"name": "Croatia", "code": "HR"},
{"name": "Cuba", "code": "CU"},
{"name": "Cyprus", "code": "CY"},
{"name": "Czech Republic", "code": "CZ"},
{"name": "Denmark", "code": "DK"},
{"name": "Djibouti", "code": "DJ"},
{"name": "Dominica", "code": "DM"},
{"name": "Dominican Republic", "code": "DO"},
{"name": "Ecuador", "code": "EC"},
{"name": "Egypt", "code": "EG"},
{"name": "El Salvador", "code": "SV"},
{"name": "Equatorial Guinea", "code": "GQ"},
{"name": "Eritrea", "code": "ER"},
{"name": "Estonia", "code": "EE"},
{"name": "Ethiopia", "code": "ET"},
{"name": "Falkland Islands (Malvinas)", "code": "FK"},
{"name": "Faroe Islands", "code": "FO"},
{"name": "Fiji", "code": "FJ"},
{"name": "Finland", "code": "FI"},
{"name": "France", "code": "FR"},
{"name": "French Guiana", "code": "GF"},
{"name": "French Polynesia", "code": "PF"},
{"name": "French Southern Territories", "code": "TF"},
{"name": "Gabon", "code": "GA"},
{"name": "Gambia", "code": "GM"},
{"name": "Georgia", "code": "GE"},
{"name": "Germany", "code": "DE"},
{"name": "Ghana", "code": "GH"},
{"name": "Gibraltar", "code": "GI"},
{"name": "Greece", "code": "GR"},
{"name": "Greenland", "code": "GL"},
{"name": "Grenada", "code": "GD"},
{"name": "Guadeloupe", "code": "GP"},
{"name": "Guam", "code": "GU"},
{"name": "Guatemala", "code": "GT"},
{"name": "Guernsey", "code": "GG"},
{"name": "Guinea", "code": "GN"},
{"name": "Guinea-Bissau", "code": "GW"},
{"name": "Guyana", "code": "GY"},
{"name": "Haiti", "code": "HT"},
{"name": "Heard Island and Mcdonald Islands", "code": "HM"},
{"name": "Holy See (Vatican City State)", "code": "VA"},
{"name": "Honduras", "code": "HN"},
{"name": "Hong Kong", "code": "HK"},
{"name": "Hungary", "code": "HU"},
{"name": "Iceland", "code": "IS"},
{"name": "India", "code": "IN"},
{"name": "Indonesia", "code": "ID"},
{"name": "Iran, Islamic Republic Of", "code": "IR"},
{"name": "Iraq", "code": "IQ"},
{"name": "Ireland", "code": "IE"},
{"name": "Isle of Man", "code": "IM"},
{"name": "Israel", "code": "IL"},
{"name": "Italy", "code": "IT"},
{"name": "Jamaica", "code": "JM"},
{"name": "Japan", "code": "JP"},
{"name": "Jersey", "code": "JE"},
{"name": "Jordan", "code": "JO"},
{"name": "Kazakhstan", "code": "KZ"},
{"name": "Kenya", "code": "KE"},
{"name": "Kiribati", "code": "KI"},
{"name": "Korea, Republic of", "code": "KR"},
{"name": "Kuwait", "code": "KW"},
{"name": "Kyrgyzstan", "code": "KG"},
{"name": "Latvia", "code": "LV"},
{"name": "Lebanon", "code": "LB"},
{"name": "Lesotho", "code": "LS"},
{"name": "Liberia", "code": "LR"},
{"name": "Libyan Arab Jamahiriya", "code": "LY"},
{"name": "Liechtenstein", "code": "LI"},
{"name": "Lithuania", "code": "LT"},
{"name": "Luxembourg", "code": "LU"},
{"name": "Macao", "code": "MO"},
{"name": "Macedonia, The Former Yugoslav Republic of", "code": "MK"},
{"name": "Madagascar", "code": "MG"},
{"name": "Malawi", "code": "MW"},
{"name": "Malaysia", "code": "MY"},
{"name": "Maldives", "code": "MV"},
{"name": "Mali", "code": "ML"},
{"name": "Malta", "code": "MT"},
{"name": "Marshall Islands", "code": "MH"},
{"name": "Martinique", "code": "MQ"},
{"name": "Mauritania", "code": "MR"},
{"name": "Mauritius", "code": "MU"},
{"name": "Mayotte", "code": "YT"},
{"name": "Mexico", "code": "MX"},
{"name": "Micronesia, Federated States of", "code": "FM"},
{"name": "Moldova, Republic of", "code": "MD"},
{"name": "Monaco", "code": "MC"},
{"name": "Mongolia", "code": "MN"},
{"name": "Montserrat", "code": "MS"},
{"name": "Morocco", "code": "MA"},
{"name": "Mozambique", "code": "MZ"},
{"name": "Myanmar", "code": "MM"},
{"name": "Namibia", "code": "NA"},
{"name": "Nauru", "code": "NR"},
{"name": "Nepal", "code": "NP"},
{"name": "Netherlands", "code": "NL"},
{"name": "Netherlands Antilles", "code": "AN"},
{"name": "New Caledonia", "code": "NC"},
{"name": "New Zealand", "code": "NZ"},
{"name": "Nicaragua", "code": "NI"},
{"name": "Niger", "code": "NE"},
{"name": "Nigeria", "code": "NG"},
{"name": "Niue", "code": "NU"},
{"name": "Norfolk Island", "code": "NF"},
{"name": "Northern Mariana Islands", "code": "MP"},
{"name": "Norway", "code": "NO"},
{"name": "Oman", "code": "OM"},
{"name": "Pakistan", "code": "PK"},
{"name": "Palau", "code": "PW"},
{"name": "Palestinian Territory, Occupied", "code": "PS"},
{"name": "Panama", "code": "PA"},
{"name": "Papua New Guinea", "code": "PG"},
{"name": "Paraguay", "code": "PY"},
{"name": "Peru", "code": "PE"},
{"name": "Philippines", "code": "PH"},
{"name": "Pitcairn", "code": "PN"},
{"name": "Poland", "code": "PL"},
{"name": "Portugal", "code": "PT"},
{"name": "Puerto Rico", "code": "PR"},
{"name": "Qatar", "code": "QA"},
{"name": "Reunion", "code": "RE"},
{"name": "Romania", "code": "RO"},
{"name": "Russian Federation", "code": "RU"},
{"name": "RWANDA", "code": "RW"},
{"name": "Saint Helena", "code": "SH"},
{"name": "Saint Kitts and Nevis", "code": "KN"},
{"name": "Saint Lucia", "code": "LC"},
{"name": "Saint Pierre and Miquelon", "code": "PM"},
{"name": "Saint Vincent and the Grenadines", "code": "VC"},
{"name": "Samoa", "code": "WS"},
{"name": "San Marino", "code": "SM"},
{"name": "Sao Tome and Principe", "code": "ST"},
{"name": "Saudi Arabia", "code": "SA"},
{"name": "Senegal", "code": "SN"},
{"name": "Serbia and Montenegro", "code": "CS"},
{"name": "Seychelles", "code": "SC"},
{"name": "Sierra Leone", "code": "SL"},
{"name": "Singapore", "code": "SG"},
{"name": "Slovakia", "code": "SK"},
{"name": "Slovenia", "code": "SI"},
{"name": "Solomon Islands", "code": "SB"},
{"name": "Somalia", "code": "SO"},
{"name": "South Africa", "code": "ZA"},
{"name": "South Georgia and the South Sandwich Islands", "code": "GS"},
{"name": "Spain", "code": "ES"},
{"name": "Sri Lanka", "code": "LK"},
{"name": "Sudan", "code": "SD"},
{"name": "Suriname", "code": "SR"},
{"name": "Svalbard and Jan Mayen", "code": "SJ"},
{"name": "Swaziland", "code": "SZ"},
{"name": "Sweden", "code": "SE"},
{"name": "Switzerland", "code": "CH"},
{"name": "Syrian Arab Republic", "code": "SY"},
{"name": "Taiwan, Province of China", "code": "TW"},
{"name": "Tajikistan", "code": "TJ"},
{"name": "Tanzania, United Republic of", "code": "TZ"},
{"name": "Thailand", "code": "TH"},
{"name": "Timor-Leste", "code": "TL"},
{"name": "Togo", "code": "TG"},
{"name": "Tokelau", "code": "TK"},
{"name": "Tonga", "code": "TO"},
{"name": "Trinidad and Tobago", "code": "TT"},
{"name": "Tunisia", "code": "TN"},
{"name": "Turkey", "code": "TR"},
{"name": "Turkmenistan", "code": "TM"},
{"name": "Turks and Caicos Islands", "code": "TC"},
{"name": "Tuvalu", "code": "TV"},
{"name": "Uganda", "code": "UG"},
{"name": "Ukraine", "code": "UA"},
{"name": "United Arab Emirates", "code": "AE"},
{"name": "United Kingdom", "code": "GB"},
{"name": "United States", "code": "US"},
{"name": "United States Minor Outlying Islands", "code": "UM"},
{"name": "Uruguay", "code": "UY"},
{"name": "Uzbekistan", "code": "UZ"},
{"name": "Vanuatu", "code": "VU"},
{"name": "Venezuela", "code": "VE"},
{"name": "Viet Nam", "code": "VN"},
{"name": "Virgin Islands, British", "code": "VG"},
{"name": "Virgin Islands, U.S.", "code": "VI"},
{"name": "Wallis and Futuna", "code": "WF"},
{"name": "Western Sahara", "code": "EH"},
{"name": "Yemen", "code": "YE"},
{"name": "Zambia", "code": "ZM"},
{"name": "Zimbabwe", "code": "ZW"}
]
ajax call looks like this
$('#countries').click(function(){
$.getJSON("countries.json", function(result){
// console.log(result);
$.each(result, function(country){
$('#countries').append('<option value'+country.name+'></option>\
')
$("select option[value='India']").attr("selected","selected");
});
});
What is wrong with my try,the json part or the location of files or the getJSON method.Please tell me how to solve it?
Note : I am running this in an express app,node server.
Related
Metafield is returning an error of "value":"expected Hash to be a String" when the metafield type is JSON
I'm using the Shopify customer API to create customers. It all works well until I add a metafield of type JSON. Then, I get the response {"errors":{"value":"expected Hash to be a String"}}. Here is the entire object I'm submitting: { "customer": { "accepts_marketing": "true", "accepts_marketing_updated_at": "2022-03-01T12:45:42.770", "currency": "USD", "default_address": { "zip": "91321", "city": "SomeCity", "phone": "5555551111", "customerCompany": "", "countryCode": "US", "default": "true", "address1": "1111 My Street", "address2": "", "province_code": "CA", "last_name": "LastusNamus", "first_name": "FirstusNamus" }, "email": "myemail#yahoo.com", "first_name": "FirstusNamus", "last_name": "LastusNamus", "created_at": "2011-12-07T00:00:00", "marketing_opt_in_level": "single_opt_in", "note": "", "order_count": 0, "phone": "5555551111", "state": "enabled", "tax_exempt": "false", "verfified_email": "true", "metafields": [{ "namespace": "customer", "key": "kickeeinfo", "type": "json", "value": { "idcustomer": "37", "iRewardPointsAccrued": "3000", "iRewardPointsUsed": "0", "idCustomerCategory": "0" } }] } } Here is the string actually being submitted: {"customer":{"accepts_marketing":"true","accepts_marketing_updated_at":"2022-03-01T12:45:42.770","currency":"USD","default_address":{"zip":"91321","city":"SomeCity","phone":"5555551111","customerCompany":"","countryCode":"US","default":"true","address1":"1111 My Street","address2":"","province_code":"CA","last_name":"LastusNamus","first_name":"FirstusNamus"},"email":"myemail#yahoo.com","first_name":"FirstusNamus","last_name":"LastusNamus","created_at":"2011-12-07T00:00:00","marketing_opt_in_level":"single_opt_in","note":"","order_count":0,"phone":"5555551111","state":"enabled","tax_exempt":"false","verfified_email":"true","metafields":[{"namespace":"customer","key":"kickeeinfo","type":"json","value":{"idcustomer":"37","iRewardPointsAccrued":"3000","iRewardPointsUsed":"0","idCustomerCategory":"0"}}]}} What is the API expecting to be submitted? I've tried escaping the metafield "value" object and that doesn't work. I get an "unexpected token" error at that point.
The metafield value has to be escaped and then enclosed in quotes: { "customer": { "accepts_marketing": "true", "accepts_marketing_updated_at": "2022-03-01T12:45:42.770", "currency": "USD", "default_address": { "zip": "91321", "city": "SomeCity", "phone": "5555551111", "customerCompany": "", "countryCode": "US", "default": "true", "address1": "1111 My Street", "address2": "", "province_code": "CA", "last_name": "LastusNamus", "first_name": "FirstusNamus" }, "email": "myemail#yahoo.com", "first_name": "FirstusNamus", "last_name": "LastusNamus", "created_at": "2011-12-07T00:00:00", "marketing_opt_in_level": "single_opt_in", "note": "", "order_count": 0, "phone": "5555551111", "state": "enabled", "tax_exempt": "false", "verfified_email": "true", "metafields": [{ "namespace": "customer", "key": "kickeeinfo", "type": "json", "value": "{\"idcustomer\": \"37\",\"iRewardPointsAccrued\": \"3000\",\"iRewardPointsUsed\": \"0\",\"idCustomerCategory\": \"0\"}" }] } }
Mapping data from nested JSON files
I'm trying to use a map function to pass all of the country names for a given continent into React components. I think I might need to convert this to an array, but I don't know how I would access the name key for each object given the objects all have different names. "AD": { "name": "Andorra", "native": "Andorra", "phone": "376", "continent": "EU", "capital": "Andorra la Vella", "currency": "EUR", "languages": [ "ca" ] }, "AE": { "name": "United Arab Emirates", "native": "دولة الإمارات العربية المتحدة", "phone": "971", "continent": "AS", "capital": "Abu Dhabi", "currency": "AED", "languages": [ "ar" ] }, "AF": { "name": "Afghanistan", "native": "افغانستان", "phone": "93", "continent": "AS", "capital": "Kabul", "currency": "AFN", "languages": [ "ps", "uz", "tk" ] }, "AG": { "name": "Antigua and Barbuda", "native": "Antigua and Barbuda", "phone": "1268", "continent": "NA", "capital": "Saint John's", "currency": "XCD", "languages": [ "en" ] }, "AI": { "name": "Anguilla", "native": "Anguilla", "phone": "1264", "continent": "NA", "capital": "The Valley", "currency": "XCD", "languages": [ "en" ] }
You can try the following var countryNames = []; for(let key in YourJsonData){ countryNames.push(YourJsonData[key][name]); } then loop over that array and render the elements in your component
Why my select doesn't display the data that I'm giving to it? Angular 10
I'm having troubles with a select in my html template of my angular project. The thing is I have a JSON with all countries. Languages Interface export interface Country{ name:string code:string } countries.json [ {"name": "Afghanistan", "code": "AF"}, {"name": "Åland Islands", "code": "AX"}, {"name": "Albania", "code": "AL"}, {"name": "Algeria", "code": "DZ"}, {"name": "American Samoa", "code": "AS"}, {"name": "AndorrA", "code": "AD"}, {"name": "Angola", "code": "AO"}, {"name": "Anguilla", "code": "AI"}, {"name": "Antarctica", "code": "AQ"}, {"name": "Antigua and Barbuda", "code": "AG"}, {"name": "Argentina", "code": "AR"}, {"name": "Armenia", "code": "AM"}, {"name": "Aruba", "code": "AW"}, {"name": "Australia", "code": "AU"}, {"name": "Austria", "code": "AT"}, {"name": "Azerbaijan", "code": "AZ"}, {"name": "Bahamas", "code": "BS"}, {"name": "Bahrain", "code": "BH"}, {"name": "Bangladesh", "code": "BD"}, {"name": "Barbados", "code": "BB"}, {"name": "Belarus", "code": "BY"}, {"name": "Belgium", "code": "BE"}, {"name": "Belize", "code": "BZ"}, {"name": "Benin", "code": "BJ"}, {"name": "Bermuda", "code": "BM"}, {"name": "Bhutan", "code": "BT"}, {"name": "Bolivia", "code": "BO"}, {"name": "Bosnia and Herzegovina", "code": "BA"}, {"name": "Botswana", "code": "BW"}, {"name": "Bouvet Island", "code": "BV"}, {"name": "Brazil", "code": "BR"}, {"name": "British Indian Ocean Territory", "code": "IO"}, {"name": "Brunei Darussalam", "code": "BN"}, {"name": "Bulgaria", "code": "BG"}, {"name": "Burkina Faso", "code": "BF"}, {"name": "Burundi", "code": "BI"}, {"name": "Cambodia", "code": "KH"}, {"name": "Cameroon", "code": "CM"}, {"name": "Canada", "code": "CA"}, {"name": "Cape Verde", "code": "CV"}, {"name": "Cayman Islands", "code": "KY"}, {"name": "Central African Republic", "code": "CF"}, {"name": "Chad", "code": "TD"}, {"name": "Chile", "code": "CL"}, {"name": "China", "code": "CN"}, {"name": "Christmas Island", "code": "CX"}, {"name": "Cocos (Keeling) Islands", "code": "CC"}, {"name": "Colombia", "code": "CO"}, {"name": "Comoros", "code": "KM"}, {"name": "Congo", "code": "CG"}, {"name": "Congo, The Democratic Republic of the", "code": "CD"}, {"name": "Cook Islands", "code": "CK"}, {"name": "Costa Rica", "code": "CR"}, {"name": "Cote D'Ivoire", "code": "CI"}, {"name": "Croatia", "code": "HR"}, {"name": "Cuba", "code": "CU"}, {"name": "Cyprus", "code": "CY"}, {"name": "Czech Republic", "code": "CZ"}, {"name": "Denmark", "code": "DK"}, {"name": "Djibouti", "code": "DJ"}, {"name": "Dominica", "code": "DM"}, {"name": "Dominican Republic", "code": "DO"}, {"name": "Ecuador", "code": "EC"}, {"name": "Egypt", "code": "EG"}, {"name": "El Salvador", "code": "SV"}, {"name": "Equatorial Guinea", "code": "GQ"}, {"name": "Eritrea", "code": "ER"}, {"name": "Estonia", "code": "EE"}, {"name": "Ethiopia", "code": "ET"}, {"name": "Falkland Islands (Malvinas)", "code": "FK"}, {"name": "Faroe Islands", "code": "FO"}, {"name": "Fiji", "code": "FJ"}, {"name": "Finland", "code": "FI"}, {"name": "France", "code": "FR"}, {"name": "French Guiana", "code": "GF"}, {"name": "French Polynesia", "code": "PF"}, {"name": "French Southern Territories", "code": "TF"}, {"name": "Gabon", "code": "GA"}, {"name": "Gambia", "code": "GM"}, {"name": "Georgia", "code": "GE"}, {"name": "Germany", "code": "DE"}, {"name": "Ghana", "code": "GH"}, {"name": "Gibraltar", "code": "GI"}, {"name": "Greece", "code": "GR"}, {"name": "Greenland", "code": "GL"}, {"name": "Grenada", "code": "GD"}, {"name": "Guadeloupe", "code": "GP"}, {"name": "Guam", "code": "GU"}, {"name": "Guatemala", "code": "GT"}, {"name": "Guernsey", "code": "GG"}, {"name": "Guinea", "code": "GN"}, {"name": "Guinea-Bissau", "code": "GW"}, {"name": "Guyana", "code": "GY"}, {"name": "Haiti", "code": "HT"}, {"name": "Heard Island and Mcdonald Islands", "code": "HM"}, {"name": "Holy See (Vatican City State)", "code": "VA"}, {"name": "Honduras", "code": "HN"}, {"name": "Hong Kong", "code": "HK"}, {"name": "Hungary", "code": "HU"}, {"name": "Iceland", "code": "IS"}, {"name": "India", "code": "IN"}, {"name": "Indonesia", "code": "ID"}, {"name": "Iran, Islamic Republic Of", "code": "IR"}, {"name": "Iraq", "code": "IQ"}, {"name": "Ireland", "code": "IE"}, {"name": "Isle of Man", "code": "IM"}, {"name": "Israel", "code": "IL"}, {"name": "Italy", "code": "IT"}, {"name": "Jamaica", "code": "JM"}, {"name": "Japan", "code": "JP"}, {"name": "Jersey", "code": "JE"}, {"name": "Jordan", "code": "JO"}, {"name": "Kazakhstan", "code": "KZ"}, {"name": "Kenya", "code": "KE"}, {"name": "Kiribati", "code": "KI"}, {"name": "Korea, Democratic People's Republic of", "code": "KP"}, {"name": "Korea, Republic of", "code": "KR"}, {"name": "Kuwait", "code": "KW"}, {"name": "Kyrgyzstan", "code": "KG"}, {"name": "Lao People's Democratic Republic", "code": "LA"}, {"name": "Latvia", "code": "LV"}, {"name": "Lebanon", "code": "LB"}, {"name": "Lesotho", "code": "LS"}, {"name": "Liberia", "code": "LR"}, {"name": "Libyan Arab Jamahiriya", "code": "LY"}, {"name": "Liechtenstein", "code": "LI"}, {"name": "Lithuania", "code": "LT"}, {"name": "Luxembourg", "code": "LU"}, {"name": "Macao", "code": "MO"}, {"name": "Macedonia, The Former Yugoslav Republic of", "code": "MK"}, {"name": "Madagascar", "code": "MG"}, {"name": "Malawi", "code": "MW"}, {"name": "Malaysia", "code": "MY"}, {"name": "Maldives", "code": "MV"}, {"name": "Mali", "code": "ML"}, {"name": "Malta", "code": "MT"}, {"name": "Marshall Islands", "code": "MH"}, {"name": "Martinique", "code": "MQ"}, {"name": "Mauritania", "code": "MR"}, {"name": "Mauritius", "code": "MU"}, {"name": "Mayotte", "code": "YT"}, {"name": "Mexico", "code": "MX"}, {"name": "Micronesia, Federated States of", "code": "FM"}, {"name": "Moldova, Republic of", "code": "MD"}, {"name": "Monaco", "code": "MC"}, {"name": "Mongolia", "code": "MN"}, {"name": "Montserrat", "code": "MS"}, {"name": "Morocco", "code": "MA"}, {"name": "Mozambique", "code": "MZ"}, {"name": "Myanmar", "code": "MM"}, {"name": "Namibia", "code": "NA"}, {"name": "Nauru", "code": "NR"}, {"name": "Nepal", "code": "NP"}, {"name": "Netherlands", "code": "NL"}, {"name": "Netherlands Antilles", "code": "AN"}, {"name": "New Caledonia", "code": "NC"}, {"name": "New Zealand", "code": "NZ"}, {"name": "Nicaragua", "code": "NI"}, {"name": "Niger", "code": "NE"}, {"name": "Nigeria", "code": "NG"}, {"name": "Niue", "code": "NU"}, {"name": "Norfolk Island", "code": "NF"}, {"name": "Northern Mariana Islands", "code": "MP"}, {"name": "Norway", "code": "NO"}, {"name": "Oman", "code": "OM"}, {"name": "Pakistan", "code": "PK"}, {"name": "Palau", "code": "PW"}, {"name": "Palestinian Territory, Occupied", "code": "PS"}, {"name": "Panama", "code": "PA"}, {"name": "Papua New Guinea", "code": "PG"}, {"name": "Paraguay", "code": "PY"}, {"name": "Peru", "code": "PE"}, {"name": "Philippines", "code": "PH"}, {"name": "Pitcairn", "code": "PN"}, {"name": "Poland", "code": "PL"}, {"name": "Portugal", "code": "PT"}, {"name": "Puerto Rico", "code": "PR"}, {"name": "Qatar", "code": "QA"}, {"name": "Reunion", "code": "RE"}, {"name": "Romania", "code": "RO"}, {"name": "Russian Federation", "code": "RU"}, {"name": "RWANDA", "code": "RW"}, {"name": "Saint Helena", "code": "SH"}, {"name": "Saint Kitts and Nevis", "code": "KN"}, {"name": "Saint Lucia", "code": "LC"}, {"name": "Saint Pierre and Miquelon", "code": "PM"}, {"name": "Saint Vincent and the Grenadines", "code": "VC"}, {"name": "Samoa", "code": "WS"}, {"name": "San Marino", "code": "SM"}, {"name": "Sao Tome and Principe", "code": "ST"}, {"name": "Saudi Arabia", "code": "SA"}, {"name": "Senegal", "code": "SN"}, {"name": "Serbia and Montenegro", "code": "CS"}, {"name": "Seychelles", "code": "SC"}, {"name": "Sierra Leone", "code": "SL"}, {"name": "Singapore", "code": "SG"}, {"name": "Slovakia", "code": "SK"}, {"name": "Slovenia", "code": "SI"}, {"name": "Solomon Islands", "code": "SB"}, {"name": "Somalia", "code": "SO"}, {"name": "South Africa", "code": "ZA"}, {"name": "South Georgia and the South Sandwich Islands", "code": "GS"}, {"name": "Spain", "code": "ES"}, {"name": "Sri Lanka", "code": "LK"}, {"name": "Sudan", "code": "SD"}, {"name": "Suriname", "code": "SR"}, {"name": "Svalbard and Jan Mayen", "code": "SJ"}, {"name": "Swaziland", "code": "SZ"}, {"name": "Sweden", "code": "SE"}, {"name": "Switzerland", "code": "CH"}, {"name": "Syrian Arab Republic", "code": "SY"}, {"name": "Taiwan, Province of China", "code": "TW"}, {"name": "Tajikistan", "code": "TJ"}, {"name": "Tanzania, United Republic of", "code": "TZ"}, {"name": "Thailand", "code": "TH"}, {"name": "Timor-Leste", "code": "TL"}, {"name": "Togo", "code": "TG"}, {"name": "Tokelau", "code": "TK"}, {"name": "Tonga", "code": "TO"}, {"name": "Trinidad and Tobago", "code": "TT"}, {"name": "Tunisia", "code": "TN"}, {"name": "Turkey", "code": "TR"}, {"name": "Turkmenistan", "code": "TM"}, {"name": "Turks and Caicos Islands", "code": "TC"}, {"name": "Tuvalu", "code": "TV"}, {"name": "Uganda", "code": "UG"}, {"name": "Ukraine", "code": "UA"}, {"name": "United Arab Emirates", "code": "AE"}, {"name": "United Kingdom", "code": "GB"}, {"name": "United States", "code": "US"}, {"name": "United States Minor Outlying Islands", "code": "UM"}, {"name": "Uruguay", "code": "UY"}, {"name": "Uzbekistan", "code": "UZ"}, {"name": "Vanuatu", "code": "VU"}, {"name": "Venezuela", "code": "VE"}, {"name": "Viet Nam", "code": "VN"}, {"name": "Virgin Islands, British", "code": "VG"}, {"name": "Virgin Islands, U.S.", "code": "VI"}, {"name": "Wallis and Futuna", "code": "WF"}, {"name": "Western Sahara", "code": "EH"}, {"name": "Yemen", "code": "YE"}, {"name": "Zambia", "code": "ZM"}, {"name": "Zimbabwe", "code": "ZW"} ] and this is how I get them. service.ts createdCountry: Country = { name:'', code:'' } country: Country[]; getCountries(){ return this.http.get<Country[]>('../assets/countries/countries.json'); } This is the component where I get the data to send it to the template. component.ts getCountries(){ this.clientService.getCountries().subscribe(countries => { this.clientService.country = countries; console.log(countries); }) } This is the data Now, in my template I got this (I have to select a country and assign it to a client that's why in ngModel I have clienteService.createdClient.pais) <div class="col-md-8"> <div class="cardForm"> <div class="card"> <div class="card-body"> <h2>Ingresar Cliente al Sistema</h2> <form #clienteForm="ngForm" (ngSubmit)="addClient(clienteForm)"> <div class="form-group"> <input type="text" class="form-control" name="nombreCliente" placeholder="Ingrese nombre del cliente" required [(ngModel)]="clientService.createdClient.nombreCliente" #nombreCliente="ngModel"> </div> <div class="form-group"> <select name="pais" [(ngModel)]="clientService.createdClient.pais" class="form-control selectpicker" data-live-search="true" #pais="ngModel"> <option *ngFor="let country of clientService.country" [ngValue]="country">{{ country.name }}</option> </select> </div> <button class="btn btn-secondary"> Save </button> </form> </div> </div> </div> </div> But the select is empty. How can i solve this?. Thanks in advance. EDIT client.service.ts import { Injectable } from '#angular/core'; import { Cliente } from '../models/clientes'; import { Country } from '../models/languages'; import { HttpClient } from '#angular/common/http'; import { Router } from '#angular/router'; #Injectable({ providedIn: 'root' }) export class ClienteService { URL_CREATE = 'http://localhost:3000/api/clients/addClient'; URL_GETALLCLIENTS = 'http://localhost:3000/api/clients/getClients'; createdClient : Cliente ={ nombreCliente: '', pais: '' }; createdCountry: Country = { name:'', code:'' } country: Country[]; client : Cliente[]; constructor(private http : HttpClient,private router: Router ) { } createClient(client: Cliente){ return this.http.post(this.URL_CREATE,client,{observe :'response'}) } getClients(){ return this.http.get<Cliente[]>(this.URL_GETALLCLIENTS); } getCountries(){ return this.http.get<Country[]>('../assets/countries/countries.json'); } } cliente.component.ts import { Component, OnInit,ViewChild } from '#angular/core'; import { ClienteService } from '../../services/cliente.service'; import { NgForm} from '#angular/forms'; import { Cliente } from 'src/app/models/clientes'; import { Router } from '#angular/router'; import { Country } from 'src/app/models/languages'; #Component({ selector: 'app-cliente', templateUrl: './cliente.component.html', styleUrls: ['./cliente.component.css'] }) export class ClienteComponent implements OnInit { constructor( public clientService : ClienteService, private router : Router ) { } ngOnInit(): void { $('.selectpicker').selectpicker(); this.getClients(); this.getCountries() } addClient(form: NgForm){ this.clientService.createClient(form.value).subscribe( res => { this.getClients(); form.resetForm(); this.router.navigate(['/addClient']); console.log(res); console.log(form); }, err => { console.log(err); } ) } getClients(){ this.clientService.getClients().subscribe( res => { if(res !== undefined){ this.clientService.client = res; } }, err => console.log(err) ) } getCountries(){ this.clientService.getCountries().subscribe(countries => { this.clientService.country = countries; console.log(countries); }) } }
First of all: Don't abuse the fact the default access modifier in Typescript is public. You shoudn't assign value directly from component to service property. For a good practice you can change all properties on services as private. And when you need any access to them from outside create a method for that. Also, avoid using jQuery in Angular. This framework has his own tools to affect on the DOM. A different kinds of Directives And about the question: Create "countries" property in component and assign value from it by getCountries method. getCountries(){ this.countriesList = this.clientService.getCountries() } <option *ngFor="let country of (countriesList | async)" [ngValue]="country">{{ country.name}}</option>
Populate mat-select option from JSON file
I tried to populate mat-select options from JSON file, but appears a error like SyntaxError: Unexpected token n in JSON at position 8584 at JSON.parse () at XMLHttpRequest.onLoad I created a service to get list: getCountries(): Observable<ICountry[]>{ return this.http.get<ICountry[]>(this._url); } Here I tried to populate the array: this._countriesService.getCountries() .subscribe(data => this.countries = data, error => console.log(error)); and the html code looks like: <mat-form-field> <mat-label>Country From</mat-label> <mat-select> <mat-option>None</mat-option> <mat-option *ngFor="let country of countries" [value]="country.name">{{country.name}}</mat-option> </mat-select> </mat-form-field> JSON file: [ {"name": "Afghanistan", "code": "AF"}, {"name": "Åland Islands", "code": "AX"}, {"name": "Albania", "code": "AL"}, {"name": "Algeria", "code": "DZ"}, {"name": "American Samoa", "code": "AS"}, {"name": "AndorrA", "code": "AD"}, {"name": "Angola", "code": "AO"}, {"name": "Anguilla", "code": "AI"}, {"name": "Antarctica", "code": "AQ"}, {"name": "Antigua and Barbuda", "code": "AG"}, {"name": "Argentina", "code": "AR"}, {"name": "Armenia", "code": "AM"}, {"name": "Aruba", "code": "AW"}, {"name": "Australia", "code": "AU"}, {"name": "Austria", "code": "AT"}, {"name": "Azerbaijan", "code": "AZ"} ] And I need to show all names to mat-select. Thank you.
Getting data from relays thrue json to freeboard
I have a relayboard on ethernet i want to controll with freeboard thru nodeRED on my raspberry pi. The link to the relayboard. I just dont know how to connect it. If i go at 192.168.1.100/current_state.json?pw=admin i get: { "CurrentState": { "DigitalInput": [ {"Name": "DI1", "Value": "0", "Count": "0"}, {"Name": "DI2", "Value": "0", "Count": "0"}, {"Name": "DI3", "Value": "0", "Count": "0"}, {"Name": "DI4", "Value": "0", "Count": "0"}, {"Name": "DI5", "Value": "0", "Count": "0"}, {"Name": "DI6", "Value": "0", "Count": "0"}, {"Name": "DI7", "Value": "0", "Count": "0"}, {"Name": "DI8", "Value": "0", "Count": "0"} ], "AnalogInput": [ {"Name": "AI1", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI2", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI3", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI4", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI5", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI6", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI7", "Value": "0", "Measure": "0.0 mV"}, {"Name": "AI8", "Value": "0", "Measure": "0.0 mV"} ], "Output": [ {"Name": "Lights", "Value": "0"}, {"Name": "VHF", "Value": "0"}, {"Name": "Radar", "Value": "0"}, {"Name": "Toilet", "Value": "0"}, {"Name": "Fridge", "Value": "0"}, {"Name": "Nav", "Value": "0"}, {"Name": "Anchor", "Value": "0"}, {"Name": "Steam", "Value": "0"}, {"Name": "Electro", "Value": "0"}, {"Name": "Bilge", "Value": "0"}, {"Name": "Water", "Value": "0"}, {"Name": "Engine", "Value": "0"}, {"Name": "DO13", "Value": "0"}, {"Name": "DO14", "Value": "0"}, {"Name": "DO15", "Value": "0"}, {"Name": "DO16", "Value": "0"} ], "PWM": [ {"Name": "PWM1", "Value": "0"}, {"Name": "PWM2", "Value": "0"} ] } } As you can see, everything is off. So thats ok. How do I get Node-RED to make the output to payload that I can make a switch with in freeboard or the Node-RED dashboard? I have search a lot of different places, but found no answer.. /Benjamin