user323: Say I have a simple smart contract:
contract Simple {
    string32 message;

    function Simple() {
        message = "Hello world!";
    }
}

How can I easily access the message variable by name in JavaScript? It looks like there is some way to map functions into JS, but variables appear to only be accessible through a complicated way:
var storageObject = web3.eth.storageAt(contractAddress);
document.getElementById('fullName').innerText = web3.toAscii(storageObject['0x']) + ' ' + web3.toAscii(storageObject['0x01']);


user26959: You should check out web3.eth.contract - it should have exactly what you need. https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract

user5464: Here is a JavaScript code for Node.JS to read a 

You need the contract Solidity source code to get ABI
With this ABI and web3 convenience methods you can read the contract data

Example:
var Web3 = require('web3');
var solc = require("solc");
var fs = require('fs');

// Connect to a geth server over JSON-RPC
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

console.log("Talking with a geth server", web3.version.api);

// Read standard token contract from https://www.ethereum.org/token
var sourceCode = fs.readFileSync('sol/token.sol','utf8')
var compiled = solc.compile(sourceCode);
var abiArray = compiled.contracts["MyToken"].interface;
abiArray = JSON.parse(abiArray);

// Create a proxy object to access the smart contract
var MyContract = web3.eth.contract(abiArray);

// instantiate by address
var address = "0x091cc7F4ACA751a6b8A4101715d6B07CD4232341";
var contractInstance = MyContract.at(address);

// All public variables have automatically generated getters
// http://bitcoin.stackexchange.com/a/38079/5464
var result = {
  "totalSupply": contractInstance.totalSupply(),
  "symbol": contractInstance.symbol(),
  "name": contractInstance.name(),
};
console.log(JSON.stringify(result));


user26726: Note that this question has been automatically mapped to reddit and answered there.
If you declare your state variables as public, a function to read their values will be automatically created by the compiler ("accessor function"). If you use the rich interface provided by web3.js, you can create a javascript contract object and just call message() on that to get the respective value.
For arrays and mappings, the compiler will generate a function that has additional arguments which correspond to the indexes. For example, for a variable mapping(uint => uint[]) public data; the function will be equivalent to function data(uint x, uint y) constant returns (uint) { return data[x][y]; }.

323: <p>Say I have a simple smart contract:</p>

<pre><code>contract Simple {
    string32 message;

    function Simple() {
        message = "Hello world!";
    }
}
</code></pre>

<p>How can I easily access the <code>message</code> variable by name in JavaScript? It looks like <a href="https://dappsforbeginners.wordpress.com/tutorials/javascript-api-2/" rel="noreferrer">there is some way to map functions into JS</a>, but variables appear to only be accessible through <a href="https://dappsforbeginners.wordpress.com/tutorials/javascript-api-1/" rel="noreferrer">a complicated way</a>:</p>

<pre><code>var storageObject = web3.eth.storageAt(contractAddress);
document.getElementById('fullName').innerText = web3.toAscii(storageObject['0x']) + ' ' + web3.toAscii(storageObject['0x01']);
</code></pre>
 26959: <p>You should check out <code>web3.eth.contract</code> - it should have exactly what you need. <a href="https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract" rel="nofollow">https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract</a></p>
 5464: <p>Here is a JavaScript code for Node.JS to read a </p>

<ul>
<li><p>You need the contract Solidity source code to get ABI</p></li>
<li><p>With this ABI and web3 convenience methods you can read the contract data</p></li>
</ul>

<p>Example:</p>

<pre><code>var Web3 = require('web3');
var solc = require("solc");
var fs = require('fs');

// Connect to a geth server over JSON-RPC
var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));

console.log("Talking with a geth server", web3.version.api);

// Read standard token contract from https://www.ethereum.org/token
var sourceCode = fs.readFileSync('sol/token.sol','utf8')
var compiled = solc.compile(sourceCode);
var abiArray = compiled.contracts["MyToken"].interface;
abiArray = JSON.parse(abiArray);

// Create a proxy object to access the smart contract
var MyContract = web3.eth.contract(abiArray);

// instantiate by address
var address = "0x091cc7F4ACA751a6b8A4101715d6B07CD4232341";
var contractInstance = MyContract.at(address);

// All public variables have automatically generated getters
// http://bitcoin.stackexchange.com/a/38079/5464
var result = {
  "totalSupply": contractInstance.totalSupply(),
  "symbol": contractInstance.symbol(),
  "name": contractInstance.name(),
};
console.log(JSON.stringify(result));
</code></pre>
 26726: <p>Note that this question has been automatically mapped to <a href="https://www.reddit.com/r/ethereum/comments/3a8oi0/is_there_a_way_to_access_ethereum_smart_contracts/" rel="noreferrer">reddit</a> and answered there.</p>

<p>If you declare your state variables as <code>public</code>, a function to read their values will be automatically created by the compiler ("<a href="https://github.com/ethereum/wiki/wiki/Solidity-Tutorial#accessor-functions" rel="noreferrer">accessor function</a>"). If you use the <a href="https://github.com/ethereum/wiki/wiki/JavaScript-API#web3ethcontract" rel="noreferrer">rich interface provided by web3.js</a>, you can create a javascript contract object and just call <code>message()</code> on that to get the respective value.</p>

<p>For arrays and mappings, the compiler will generate a function that has additional arguments which correspond to the indexes. For example, for a variable <code>mapping(uint =&gt; uint[]) public data;</code> the function will be equivalent to <code>function data(uint x, uint y) constant returns (uint) { return data[x][y]; }</code>.</p>
