我只想首先说我不是JavaScript开发人员,我是新手。
好的,所以,我有一个名为id的会话值,这是一个很长的(例如:76561198237133252),我将其作为方法的参数传递。问题是实际运行该函数时id不正确。
JS:
function sendMessage(id)
{
var message = $("#message").val();
if (message)
{
$.ajax(
{
url: 'addChatMessage.php',
type: 'POST',
data: '&id=' + id+ '&message=' + message,
dataType: 'text',
success: function (data)
{
$('#chatMessages').load(document.URL + ' #chatMessages');
document.getElementById('message').value = '';
$('#chatScrollable').animate({scrollTop:$(document).height()}, 1000);
window.alert("Id: " + id);
}
});
}
}
HTML:
<div class="chat-input">
<div class="input-group">
<input type="text" id="message" class="form-control" placeholder="Message..." required>
<!-- <input type="hidden" id="id" value="<?php //echo $_SESSION['id']; ?>"> -->
<span class="input-group-btn">
<button class="btn btn-default" id="msgButton" type="button" onclick="sendMessage(<?php echo $_SESSION['id']; ?>);">Send</button>
</span>
</div>
</div>
感谢任何帮助。
答案 0 :(得分:0)
在PHP中使用json_encode()
将PHP值转换为相应的Javascript文字。它会正确编码以保持相同的数据类型(例如在字符串周围加上引号)。
<button class="btn btn-default" id="msgButton" type="button" onclick="sendMessage(<?php echo htmlentities(json_encode($_SESSION['id'])); ?>);">Send</button>
您还需要使用htmlentities()
将字符串周围的引号转换为实体。否则,引用将与onclick=
之后的引用匹配,并结束属性。
答案 1 :(得分:-1)
由于这个原因,Javascript既令人敬畏又恶化:它会自动转换字符串和数字以理解不可能的语句。您的ID是一个数字,因此可能无法正确转换为字符串。使用.toString()
的ID来解决此问题。