在我的网站上,我有一个链接,其中用户ID存储如下:
<p>by <a href="#" onclick="ofUser(<?php echo $uid; ?>, event);"><?php echo $store_name; ?> (<?php echo $no_pro_of_user; ?>)</a></p>
您可以在此处查看变量$uid
。这是用户ID。所以我想在点击此链接时进行ajax调用。它应该获得$uid
到结果页面ofUser.php
的值。但是在结果页面(ofUser.php)中它显示:
未定义的索引:id
你能告诉我怎样才能解决它?
这是JS offUser函数
function ofUser(id, event){
id = $(id);
event.preventDefault();
var formData = id;
$.ajax({
url : <?php echo "'ofUser.php'"; ?>,
type : 'POST',
xhr : function () {
var myXhr = $.ajaxSettings.xhr();
return myXhr;
},
beforeSend : function () {
$("#ofUser_message").val("Searching...");
},
success : function (data) {
$("#danger").hide();
$("#bydault_pagination").hide();
$("#bydeafult_search").hide();
$("#ofUser_message").html(data);
},
data: formData,
cache: false,
contentType: false,
processData: false
});
}
offUser.php
echo $uid = (int) $_POST['id'];
答案 0 :(得分:2)
id = $(id);
会将id
转换为jQuery对象,这在这里没有任何意义。它将id
设为array
(id=$(1) => [1]
)
另请注意,通过服务器发送的data
应该是一个对象。
试试这个:
function ofUser(id, event) {
event.preventDefault();
$.ajax({
url: 'ofUser.php',
type: 'POST',
xhr: function() {
var myXhr = $.ajaxSettings.xhr();
return myXhr;
},
beforeSend: function() {
$("#ofUser_message").val("Searching...");
},
success: function(data) {
$("#danger").hide();
$("#bydault_pagination").hide();
$("#bydeafult_search").hide();
$("#ofUser_message").html(data);
},
data: {
id: id
},
cache: false
});
}
&#13;
修改:删除processData : true
,因为它会将数据发送为DOMDocument
答案 1 :(得分:0)
尝试传递id = id;
而不是id = $(id);
,因为$(id)意味着您正在尝试使用jQuery获取任何DOM元素值,我希望它能够工作,还告诉我,HTML是什么为您的代码生成
<p>by <a href="#" onclick="ofUser(<?php echo $uid; ?>, event);"><?php echo $store_name; ?> (<?php echo $no_pro_of_user; ?>)</a></p>
答案 2 :(得分:0)
要解决此问题,请使用SIMPLIFY以确保正确传递ID值。在您的AJAX成功函数中,ALERT您发回的值,以便您可以立即看到您在PHP中收到的内容。
尝试以这种方式进行设置:
<强> HTML:强>
<p>by <a id="uid_<?php echo $uid; ?>" href="#" ><?php echo $store_name; ?> (<?php echo $no_pro_of_user; ?>)</a></p>
<强>的javascript:强>
$('[id^=uid_]').click(function(event){
event.preventDefault();
var formData = this.id.split('_')[1];
$("#ofUser_message").val("Searching...");
$.ajax({
type : 'POST',
url : 'ofUser.php',
data : id=formData,
success : function (data) {
alert(data);
$("#danger").hide();
$("#bydault_pagination").hide();
$("#bydeafult_search").hide();
$("#ofUser_message").html(data);
}
});
});
<强> ofUser.php 强>
$uid = $_POST['id']; //REMOVE the (int) for now, to verify what PHP is receiving - then add it back.
echo 'Received $uid';
注意:
(1)注意你拼错了User.php和offUser.php(不确定哪个是正确的 - 我和ofUser.php一起去了)
(2)尽量不要使用内联javascript。如上例所示,当您从HTML中分解javascript时,jQuery最容易使用。
(3)在上面的示例中,使用了jQuery选择器 starts with
:
$('[id^=uid_]').click(function(event){
该代码由ID为uid_
的任何元素触发,因为我们配置了<a>
标记的ID。这样可以很容易地在HTML中看到。
(4)这一行:
var formData = this.id.split('_')[1];
使用纯JavaScript来获取ID,因为它更快 - 并且更容易输入。代码在_
字符处拆分ID的第二部分,只得到ID号。然后将该ID号分配给变量formData
(5)在AJAX代码块中,确保url拼写正确:
url : 'ofUser.php',
以下是一些其他可能有用的简单AJAX示例。不要只看它们 - 在你的服务器上重现它们并与它们一起玩。它们很简单,但你可能会学到很多东西:
答案 3 :(得分:0)
点击任何超链接后,开始重定向到提供的网址。因此,您需要使用Click事件处理程序中的以下代码来阻止其默认操作
event.preventDefault();