来自PHP变量

时间:2016-05-03 18:19:32

标签: javascript php

我只想首先说我不是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>

感谢任何帮助。

2 个答案:

答案 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来解决此问题。