我正在使用websocket进行词汇测试。该程序首先返回一个单词,例如'bonjour'。用户填写翻译'hello'。我希望将单词以JSON对象的形式发送到javascript代码。在PHP脚本中,使用json_encode将数组发送到javascript文件。该数组看起来像这样:{"response":"bonjour"}
。
我正在尝试使用array['response']
打印回复,但这会返回Unexpected token h in JSON at position 0
。我也试过了array.response
。我认为这与JSON对象是纯文本的事实有关。我尝试使用parseJSON解决这个问题,但它仍然返回Unexpected token h in JSON at position 0
。
非常感谢任何帮助。
<!doctype html>
<html>
<head>
<meta charset='UTF-8' />
<style>
input, textarea {border:1px solid #CCC;margin:0px;padding:0px}
#body {max-width:800px;margin:auto}
#log {width:100%;height:400px}
#message {width:100%;line-height:20px}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script src="fancywebsocket.js"></script>
<script>
var Server;
function log( text ) {
$log = $('#log');
//Add text to log
$log.append(($log.val()?"\n":'')+text);
//Autoscroll
$log[0].scrollTop = $log[0].scrollHeight - $log[0].clientHeight;
}
function emptylog(){
$("#log").html("");
}
function send( text ) {
Server.send( 'message', text );
}
$(document).ready(function() {
log('Connecting...');
Server = new FancyWebSocket('ws://websocket.com/ws2/');
emptylog();
$('#message').keypress(function(e) {
if ( e.keyCode == 13 && this.value ) {
log( 'You: ' + this.value );
send( this.value );
$(this).val('');
}
});
//Let the user know we're connected
Server.bind('open', function() {
log( 'Connected' );
});
//OH NOES! Disconnection occurred.
Server.bind('close', function( data ) {
log( "Disconnected." );
});
//Log any messages sent from server
Server.bind('message', function( payload ) {
var array = jQuery.parseJSON(payload);
log( array['response'] );
});
Server.connect();
});
</script>
</head>
<body>
<div id='body'>
<textarea id='log' name='log' readonly='readonly'></textarea><br/>
<input type='text' id='message' name='message' />
</div>
</body>
</html>