我有这个按钮
<button id="<?php echo $u['id']?>" name="activation" onclick="handleButton(this);" type="submit" class="btn btn-success"></button>
这个按钮与此相关
<td id="<?php echo $u['id']?>"><?php echo $u['id']?></td>
我正在使用此脚本将按钮的值发送到我的php控制器
function handleButton(obj) {
var javascriptVariable = obj.id;
// alert (javascriptVariable);
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/admin/active_users",
dataType: 'text',
data: 'myname='+javascriptVariable,
success: function (data){
}
});
}
当我使用警报时,javascriptVariable
的结果是正确的,我希望它在我的控制器中,所以我正在我的控制器中尝试这样做:
if(isset($_POST['activation']))
{
$name = $this->input->post('myname');
var_dump($name);
}
但是我得到null
值,有什么不对?
答案 0 :(得分:5)
当您通过AJAX从浏览器传递数据时,您在data:
参数中传递的数据将被发送到PHP脚本。
因此,如果要在PHP脚本中测试activation
,则必须实际发送该参数
另请参阅下面对data:
参数创建的修订。在传递多个参数时,它更易于阅读并且更容易正确编码,因为您无需记住&
和+
连接。
function handleButton(obj) {
obj.preventDefault();
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/admin/active_users",
dataType: 'text',
data: {activation: 1, myname: obj.id}, // add parameter
success: function (data){
alert(data);
}
});
}
现在PHP将在$ _POST数组activation
和myname
if(isset($_POST['activation']))
{
$name = $_POST['myname'];
var_dumb($name);
}
或者如果你使用的是我认为你是
的框架if(isset($this->input->post('activation')) {
$name = $this->input->post('myname');
var_dumb($name);
}
编辑:
发现另一个问题,您的按钮具有属性type="submit"
,这将导致javascript以正常方式提交的表单运行。
删除type="submit"
属性并加倍确认表单不会被提交,以及AJAX在AJAX调用之前添加对preventDefault();
的调用
答案 1 :(得分:1)
由于php脚本受第二个POST变量[if(isset($_POST['activation']))
]的限制,你也应该发布它。
function handleButton(obj) {
var javascriptVariable = obj.id;
// alert (javascriptVariable);
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/admin/active_users",
dataType: 'text',
data: 'myname='+javascriptVariable+'&activation=1',// <-- RIGHT HERE
success: function (data){
alert(data);
}
});
}
SIDE注意:你也可以回应而不是转储变量:
if(isset($_POST['activation']))
{
echo $this->input->post('myname');
}
答案 2 :(得分:0)
在你的ajax函数中试试这个:
public ReportingDbContext() : base("ReportingDbContext")
{
var objectContext = ((IObjectContextAdapter)this).ObjectContext;
objectContext.SavingChanges += new EventHandler(OnSavingChanges);
}
public void OnSavingChanges(object sender, EventArgs e)
{
foreach (ObjectStateEntry entry in
((ObjectContext)sender).ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified))
{
if (!entry.IsRelationship && (entry.Entity is ISerialize))
{
(entry.Entity as ISerialize).Serialize();
}
}
}
在你的PHP脚本中,你可以function handleButton(obj) {
var javascriptVariable = obj.id;
//alert (javascriptVariable);
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>index.php/admin/active_users",
dataType: 'text',
data: {myname: javascriptVariable},
success: function (data) {}
});
}
来获取它(也许$_POST['myname']
可以工作,你可以测试它)
答案 3 :(得分:0)
看两个id
<button id="<?php echo $u['id']?>" name="activation" onclick="handleButton(this);" type="submit" class="btn btn-success"></button>
和
<td id="<?php echo $u['id']?>"><?php echo $u['id']?></td>
对于这两个html元素id
是相同的。它不能在同一页面中使用。这可能会给您带来问题......