从php发送数据到javascript无法正常工作

时间:2014-07-23 03:25:17

标签: javascript php

我正在尝试发送变量" userID"从php到javascript。但是,当我打印"数据"它显示了整个javascript文档。

以下是代码

的index.php:

$userID =10;
if(isset($_POST['userID'])){
    switch (($_POST['userID'])){
        case  'getUSerID':
            echo $userID;       
            break;
   }    
}

Javascript代码:

$(document).ready(function(){
    var userID = getUserID("getUserID");

function getUserID(){
 $.ajax({
        url : 'index.php',
        type: 'POST',
        data : userID,
        success: function(data, textStatus, jqXHR)
        {   

            return data;
        },
        error: function (jqXHR, textStatus, errorThrown)
        {
            event.preventDefault();
            alert( 'Failed to toogle.');
        }
      });
     }
}

任何人都可以告诉我代码中的错误。

提前致谢

3 个答案:

答案 0 :(得分:0)

在你的php中,你显示的是一个没有值的变量,你应该为这个$userID分配一个值

$userID = $_POST['userID'];

第二个问题是在你的javascript中你做了这个

var userID = getUserID("getUserID");

每次undefined值返回userID时都会返回,因为getUserID没有返回任何内容。它有一个函数$.ajax并且不会返回任何东西,因为它是异步的

第三个问题是在$.ajax内你发送userID的值,每次都是undefined

请详细说明您要发送的数据,以及您希望如何处理结果,以便我们为您提供帮助。

答案 1 :(得分:0)

在你的js上试试这个(假设你将userID的值传递给$userID):

    <script>
      var userID = <?php 
      if(isset($_POST['userID'])){
        switch (($_POST['userID'])){
            case  'getUSerID': echo json_encode($userID);       
                               break;
            }    
      }
      ?>;
    </script>

使用json_encode()要求:

  • PHP 5.2.0或更高版本
  • $userID编码为UTF-8(当然是US-ASCII)

由于UTF-8支持完整的Unicode,因此动态转换应该是安全的。

答案 2 :(得分:0)

好吧,如果你需要从你的php文件中获取数据,不需要发布一个变量来改变它,因为我从你的代码中理解了...你需要做的就是使用像这样的jQuery异步获取它

var userID;
function getUserID()
{
    $.get( "test.php", function( data ) {
        userID = data;
    });
}

这个是异步的,这意味着,你调用函数,一旦得到结果,它就将它分配给userID,然后你可以使用userID变量

第二个解决方案是使用像这样的同步ajax函数

   function getUserID()
   {
        if (window.XMLHttpRequest)
            AJAX=new XMLHttpRequest(); 
        else
            AJAX=new ActiveXObject("Microsoft.XMLHTTP");
        if (AJAX)
        {
            AJAX.open("GET", "test.php", false);
            AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            AJAX.send();
            return AJAX.responseText;                              
        } 
        else
            return null;
   }
   var userID = getUserID();

这个可以允许你调用得到你的结果,因为它有一个return语句...如果你试图发送一个巨大的日期,它可能会减慢你的应用程序。

并且不要忘记加载.php文件echo $userID,无需测试isset($_POST...,因为您只需要从我不了解的PHP中获取数据从你的问题

最后一件事,如果你需要将一个数组或一个对象从php传递到javascript,你必须json编码和json解码...告诉我,我会帮助你。