通过AJAX将数据表单交给PHP

时间:2012-01-27 01:24:43

标签: 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').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时,我是一个完整的新手,所以任何关于正确的方法的建议都会很棒!

2 个答案:

答案 0 :(得分:1)

1)你知道jquery你可以做到这一点,对吗?

var defaultpic_from  = $('#defaultpic_from').val();

2)另外,你不需要转动&进入一个实体,但如上所述,你应该在值

中使用encodeURIComponent

3)在ajax请求发出之前,您是否验证了所有变量实际具有的值?当你看POST时会发生什么?你是在POST中获得成员,但没有值?或没有钥匙,没有价值观?

4)尝试使用开发人员工具中的Chrome网络标签来检查请求和响应

这是我现在使用的一个例子,其中params是nvp string,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 json_encode($_POST);

以便更容易获得回复

答案 1 :(得分:0)

我敢打赌,默认图片的值正在终止查询字符串。您可以像这样包装您的变量以确保它们被正确转义:

$(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 vars进行urldecode,但是应该这样做。