【问题标题】:Passing variables from javascript via ajax to php通过ajax将变量从javascript传递到php
【发布时间】:2017-04-15 04:58:09
【问题描述】:

我是 jquery 和 ajax 的新手。我在这里有一个脚本,我需要将变量传递给一个 php 文件。然后该 php 将被编码为 div#chat-body。我正在尝试通过 POST 将接收器变量传递给 load-messages.php,但出现以下错误:“未定义索引:第 8 行 xxxx/scripts/load_messages.php 中的接收器”。我认为我的语法有问题,或者我这样做完全错误。

script.js

$('input#send-message').on('click', function(){
alert("test");
var message = $('input#input-message').val();
var sender= $('input#sender').val();
var receiver= $('input#receiver').val();

    if($.trim(message)!=''){
        $.post('scripts/messaging.php', {message: message, sender: sender, receiver:receiver}, function(data){
        //output after sending message  

        });     
        //load message to  chat-body div

        $.ajax({
        url: 'scripts/load_messages.php',
        type: "POST",
        data: {receiver: receiver},
        success: function(data){
            $('#chat-body').html(data);
            //$('#chat-body').scrollTop($('#chat-body')[0].scrollHeight); 
        }
    });
    }});

加载消息.php

 <?php 
    session_start();
    require('config.php');
    require('chat_functions.php');


$messages = get_msg($_SESSION['user_id'], $_POST['receiver']);

foreach($messages as $message){
    if($message['sender'] == $_SESSION['user_id'])  {
        ?><div id = "you_message">

        <?php echo '<strong> You: </strong><br />';
        echo $message['message'].'<br /><br />';?>
        </div><!--you_message-->
        <?php   
    }

    else{
        ?><div id="recipient_message">
        <?php echo '<strong>'.get_name($_POST['receiver']).'</strong><br />';
        echo $message['message'].'<br /><br />';?>
        </div> <!--recipient_message -->
        <?php
        }
    }

    ?>

【问题讨论】:

  • 显然,变量receiver没有被传递给load-message.php
  • @BrianOna :请检查我的答案,应该可以帮助您调试 :)
  • 我认为你的代码没有问题,尝试在firebug中调试正在发布的关键值
  • 感谢大家的帮助。在查看@SasiRekha 的答案后,我刚刚在变量接收器上添加了引号。

标签: php ajax post


【解决方案1】:

通过 AJAX 调用将值传递给 php 文件很简单。 如下所示更改您的 AJAX 调用

var message = $('#input-message').val();
var sender= $('#sender').val();
var receiver= $('#receiver').val(); 
$.ajax({
    url: "scripts/load_messages.php", 
    method: "post", 
    //data: { "message":$('#input-message').val(),"sender":$('#sender').val(),"receiver":$('#receiver').val()},you can pass the values directly like this or else you can store it in variables and can pass
    data: { "message":message,"sender":sender,"receiver":receiver},
    success: function(data){
    $('#chat-body').html(data);
    },
     error: function() {
    alert('Not OKay');
    } 
   });

你的 load-messages.php 可能是这样的`

$receiver = $_POST['receiver'];
echo $receiver;

【讨论】:

  • 这成功了!只需要在接收器上添加报价。谢谢。
【解决方案2】:

您传递的是一个对象,而不是 JSON 字符串:

$.ajax({
  type: 'POST',
  url: 'scripts/messaging.php',
  data: JSON.stringify ({receiver: receiver}),
  success: function(data) { alert('data: ' + data); },
  contentType: "application/json",
  dataType: 'json'
});

【讨论】:

    【解决方案3】:

    你可以试试这个,然后根据你的需要调整它,因为我只是让它更“基本”一点:

    你的表格:

    <form action="#" id="form" method="post">
    <input type="text" id="sender" name="sender" />
    <input type="text" id="receiver" name="receiver" />
    <input type="text" id="input-message" name="input-message" />
    <input type="submit" id="send-message" value="Post" />
    </form>
    
    <div id="chat-body" class="regular"></div>
    

    jQuery 部分:

    $(document).ready(function(){
    
    $("#send-message").click(function(e){
    e.preventDefault(); /* to prevent form default action */
    
    var message = $('#input-message').val();
    var sender = $('#sender').val();
    var receiver = $('#receiver').val();
    
        $.ajax({
        url: "load_messages.php",
        method: "POST",
        data: { message: message, sender: sender, receiver:receiver },
        success: function(html){
            alert(html); /* checking response */
            $('#chat-body').html(html); /* add to div chat */
        }
      });
     });
    });
    

    然后,load_message.php

    <?php
    
    error_reporting(E_ALL); ini_set('display_errors', 1);
    
    $sender = $_POST['sender'];
    $receiver = $_POST['receiver'];
    $message = $_POST['message'];
    
    echo"[ $sender / $receiver / $message ]"; /* here, you can only echo $message for instance, 
    then use response to append message to chat window */
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 1970-01-01
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      相关资源
      最近更新 更多