2013-03-19 73 views
5

我有1个PHP文件名称index.php。在那个文件中,我想将一个变量从ajax传递给php。从ajax传递变量到php

var elem = document.getElementById("mydiv").value; 
(function($) 
{ 
    $(document).ready(function() 
    { 
     $.ajax(
     { 
      type:"POST", 
      url: window.location.href, 
      data: 'action='+elem, 
      beforeSend: function() { 
       $('#cctv').hide(); 
      }, 
      complete: function() { 
       $('#cctv').show(); 
      }, 
      success: function() { 
       $('#cctv').show(); 
      } 
     }); 
     var $container = $("body"); 
     $container.load('findAllPath.php',{'function': 'findAllPath'}); 
     var refreshId = setInterval(function() 
     { 
      $container.load('findAllPath.php',{'function': 'findAllPath'}); 
     }, 10000); 
    }); 
})(jQuery); 

和我的PHP的萤火

if (isset ($_POST['action'])) 
{ 
    echo $_POST['action']; 
} 

,我可以看到,AJAX已经发​​布 '行动=价值',但在php,$ _ POST [ '行动']是空的。 任何人都可以帮助我,我的代码有什么问题? 谢谢

+0

isset测试通过了吗?它是设置,但只是一个空字符串? – Dutts 2013-03-19 09:41:20

+0

从哪里执行此JavaScript执行?例如,它是在''标签内,还是在''附近的底部? – 2013-03-19 09:47:28

+0

尝试使'数据'为散列而不是查询字符串。 – halfer 2013-03-19 10:03:21

回答

1

它设置为JSON对象:

data: {action: elem} 

不要用纯JS混合jQuery的。

var elem = $('#myDiv').val(); 

和上面的朋友说的。可能会出现js在加载整个页面之前试图获取value属性的情况。你应该在文档准备好块中做所有事情。

你也可以这样做:

data: { 
action: $('#myDiv').val() 
} 

你一定会那么,你必须在表格上最新的数据!

4

尝试使用这样

data: {action: elem}, 

的数据。例如

$.ajax({ 
    type: "POST", 
    url: "some.php", 
    data: { name: "John", action: "save" } 
    }).done(function(msg) { 
    alert("Data Saved: " + msg); 
}); 

printr整个$ _REQUEST和检查,如果你越来越行动

+0

我已经试过了,但有没有不同:( – 2013-03-20 01:11:58

1

查找到这一点,并找到你错过了什么

$.ajax({ 
     type: "POST", 
     url: "some.php", 
     data: { action: elem} 
     beforeSend: function() { 
      $('#cctv').hide(); 
     }, 
     complete: function() { 
      $('#cctv').show(); 
     }, 
     success: function() { 
      $('#cctv').show(); 
     } 
    }); 
    var $container = $("body"); 
    $container.load('findAllPath.php',{'function': 'findAllPath'}); 
    var refreshId = setInterval(function() 
    { 
     $container.load('findAllPath.php',{'function': 'findAllPath'}); 
    }, 10000); 
}); 
+0

嗯?我不明白,如果你的意思是网址:“some.php”而不是window.location.href,是不会有任何不同 – 2013-03-20 01:01:31

+0

数据:'action ='+ elem,这是错误的一,你没有得到答案或无法理解? – 2013-03-20 05:14:16

0
if (!empty($_POST['action'])) 
{ 
echo $_POST['action']; 
} 

试试这个代码...

+0

但$ _POST ['行动']是未定义的,所以空的测试不会通过 – 2013-03-20 00:59:52