通过AJAX将数据格式转换为PHP
多次使用此脚本将1或2个值传递给PHP文件,效果非常好。现在使用它传递7个值,只有前2个通过通过AJAX将数据格式转换为PHP,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,多次使用此脚本将1或2个值传递给PHP文件,效果非常好。现在使用它传递7个值,只有前2个通过 $(document).ready(function(){ $("form#send_note").submit(function() { var to_user = $('#to_user').attr('value'); var from_user = $('#from_user').attr('value'); var defaultpic_from = $('#defaultpic_from'
$(document).ready(function(){
$("form#send_note").submit(function() {
var to_user = $('#to_user').attr('value');
var from_user = $('#from_user').attr('value');
var defaultpic_from = $('#defaultpic_from').attr('value');
var defaultpic_to = $('#defaultpic_to').attr('value');
var your_username = $('#your_username').attr('value');
var message_title = $('#message_title').attr('value');
var message_contents = $('#message_contents').attr('value');
$.ajax({
type: "POST",
url: "../inbox/send_note.php",
data: "to_user="+ to_user +"& from_user="+ from_user + "& defaultpic_from="+ defaultpic_from + "& defaultpic_to="+ defaultpic_to + "& your_username="+ your_username + "& message_title="+ message_title + "& message_contents=" + message_contents,
success: function(){
$('form#send_note').hide(function(){$('div.success2').fadeIn();});
}
});
return false;
});
});
我已经仔细检查了所有的名称,所有的都是有序的,只是from_user(defaultpic_from)之后的值,等等都不会通过。
我相信这就是我列出“数据”的方式。说到javascript,我是一个完全的新手,所以任何关于如何通过javascript的建议都是非常棒的 我打赌默认pic的值将终止查询字符串。您可以这样包装您的VAR,以确保它们正确转义:
$(document).ready(function(){
$("form#send_note").submit(function() {
var to_user = encodeURIComponent($('#to_user').attr('value'));
var from_user = encodeURIComponent($('#from_user').attr('value'));
var defaultpic_from = encodeURIComponent($('#defaultpic_from').attr('value'));
var defaultpic_to = encodeURIComponent($('#defaultpic_to').attr('value'));
var your_username = encodeURIComponent($('#your_username').attr('value'));
var message_title = encodeURIComponent($('#message_title').attr('value'));
var message_contents = encodeURIComponent($('#message_contents').attr('value'));
$.ajax({
type: "POST",
url: "../inbox/send_note.php",
data: {to_user:to_user, from_user:from_user, defaultpic_from: defaultpic_from, defaultpic_to:defaultpic_to, your_username:your_username, message_title:message_title, message_contents:message_contents},
success: function(){
$('form#send_note').hide(function(){$('div.success2').fadeIn();});
}
});
return false;
});
});
您将需要在php中对post变量进行URL解码,但这应该可以做到。1)您知道,使用jquery就可以做到这一点,对吗
var defaultpic_from = $('#defaultpic_from').val();
2) 另外,您不需要将&转换为一个实体,但是如上所述,您应该在值中使用encodeURIComponent
3) 在发出ajax请求之前,您是否验证了所有变量实际上都有值?当你在邮件中查看时会发生什么?你是不是让会员们在帖子里,但没有价值观?或者没有键也没有值
4) 尝试在开发者工具中使用Chrome的网络选项卡来检查请求和响应
下面是我现在使用的一个示例,其中params是nvp字符串,sync是true
var callService = function(sync, params, successCB, errorCB){
console.log('ENTER callService');
$.ajax({
type : 'POST',
url : 'required/core/Service.php',
async : sync,
data : params,
dataType : 'json',
success : function(data){
console.log('ENTER POST SUCCESS');
successCB(data);
},
error : function(){
console.log('ENTER POST ERROR');
errorCB();
}
});
};
如果您能够进入请求和响应头并向我们展示它们,那么什么才是真正有帮助的呢。你可以使用PHP echo
echo json_encode($_POST);
为了更容易得到答案同样,科学家关于.val()的说法是正确的。虽然您的方法可以工作,但对于库来说,使用预期的函数更合适。如果仍然失败,尝试改变所有这些&;只是&两个变量之间没有空格。该死的,是同一件事。在我的PHP文件中,我有一个_POST变量通过这个函数,在我们添加了urldecode之后,我应该删除它还是添加一个不同的函数$to_user=htmlspecialchars(修剪($_POST['to_user']);请再次检查答案。我将其更改为使用对象类型post变量,而不是查询字符串。这个方法让jquery自己组成查询字符串。所以关闭,它在每个空格之间只有%20。但它起作用了!我要看看我是否能用php将其分解并转储!不要爆炸$to_user=htmlspecialchars(trim(urldecode($_POST['to_user']));不幸的是,我对javascript知之甚少,只是对它有一个非常基本的了解。我在不使用jquery的情况下通过php传递了这些值,并且它正确地进行了响应。我将使用这个encodeURIComponent函数,看看我能做些什么。非常感谢您的回复!我指的是更容易调试,比如说在Chrome的网络选项卡中,我使用Chrome已经有一段时间了,从来没有注意过网络选项卡。这使生活更容易。谢谢你,先生。数据正在被发送。另外,当我绕过ajax并直接进入php文件时,这些值可以正常运行。当你说直接进入页面时,你的意思是在浏览器中使用url和查询字符串?如果您使用的是$\u POST,那么这将不起作用。您使用的是REQUEST吗?另外,建议echoot out just POST确认PHP正确接收了所有内容,除非这是您所说的发送数据