Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过AJAX将数据格式转换为PHP_Php_Javascript_Jquery_Ajax - Fatal编程技术网

通过AJAX将数据格式转换为PHP

通过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'

多次使用此脚本将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').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正确接收了所有内容,除非这是您所说的发送数据