Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.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
Jquery 是否将自定义对象作为POST变量提交到url?_Jquery_Submit_Custom Object - Fatal编程技术网

Jquery 是否将自定义对象作为POST变量提交到url?

Jquery 是否将自定义对象作为POST变量提交到url?,jquery,submit,custom-object,Jquery,Submit,Custom Object,因此,我已将“已完成”HTML表单的值转换为自定义数据对象,以供各种js.functions使用,这些函数可能会或可能不会在对象传递之前更新所述数据对象参数的值,也可能不会(通过ajax)最终进行传递在表单数据最终提交(到paypal)之前,将表单数据提交到PHP进行数据库操作 当然,我知道如何提交表单,以及如何通过AJAX将对象作为POST数据传递,但我想知道如何或是否可能发布我的数据对象(同样,发布到payapl),而不必中途停止更新表单本身的输入值,这样我就可以提交它。类似于 <sc

因此,我已将“已完成”HTML表单的值转换为自定义数据对象,以供各种js.functions使用,这些函数可能会或可能不会在对象传递之前更新所述数据对象参数的值,也可能不会(通过ajax)最终进行传递在表单数据最终提交(到paypal)之前,将表单数据提交到PHP进行数据库操作

当然,我知道如何提交表单,以及如何通过AJAX将对象作为POST数据传递,但我想知道如何或是否可能发布我的数据对象(同样,发布到payapl),而不必中途停止更新表单本身的输入值,这样我就可以提交它。类似于

<script>
data = {};
data.type ='form';
data.method ='post';
data.action ='https://www.sandbox.paypal.com/cgi-bin/webscr';
data.foo = 'foo';
data.bar = 'bar';
jQuery('#btn').click(function(){ jQuery('#form').submit(); });
jQuery('#post_data').click(function(){ data.submit();/*duh....???*/ });
</script>

<form id='data' action='https://www.sandbox.paypal.com/cgi-bin/webscr' method='post'>
    <input type='text' name='foo' value='foo' />
    <input type='text' name='bar' value='bar' />
</form>
<input type='button' id='btn' value='Submit'>
<input type='button' id='post_data' value='Post Data'>

数据={};
data.type='form';
data.method='post';
data.action=https://www.sandbox.paypal.com/cgi-bin/webscr';
data.foo='foo';
data.bar='bar';
jQuery('#btn')。单击(函数(){jQuery('#表单')。提交();});
jQuery(“#发布数据”)。单击(函数(){data.submit();/*duh…?*/});

这当然是行不通的-(

正如Marc B在一篇评论中所说,您只需将一个普通对象传递到
jQuery.post
,它在发送到服务器时将被“序列化”。从服务器获取响应并与表单一起提交是另一个问题。实际上,我假设“PHP用于数据库操作”thing返回一个JSON对象,该对象的字段与传入的字段相同,或者至少是表单中的表单字段,最终应该提交给paypal(或者其他什么)

因此只发送
数据
很容易:
jQuery.post('yourDatabaseManipulation.php',data);
这一个没有回调来处理结果…尝试句柄导致以下有点疯狂的代码:

jQuery('#post_data').click(function() {
  var $form = jQuery(this).parents('form');

  jQuery.post('yourDatabaseManipulation.php', data).done(function(validatedData) {

    // returned values: fill into form before submit
    for (key in validatedData) {
      // special cases need extra attention
      if (key == 'action' || key == 'method') {
        $form.attr(key, validatedData[key]);
      } else if (key == 'type') {
        // no idea what to do with this one, so ignore it
      } else {
        // everything else should have a input field in the form
        // or it will just be dropped
        // FIXME: we trust our server response not to do some nasty XSS via keys here
        var $field = jQuery("input[name='"+key+"']", $form);
        $field.val(validatedData[key]);
      }
    }
    $form.submit();

  }).fail( function(jqXHR, textStatus, errorThrown) {
      // our very sophisticated error handling
      alert('fail '+textStatus);
  });

});
这应该获取从
yourDatabaseManipulation.php
中获取的值,用“已验证”值覆盖用户键入的所有内容(可能包括不同的表单操作),然后提交表格。我不确定您是否想这样做,但我希望您能从中了解您真正想做什么


Edit:我发现只有在测试时自动将提交按钮移动到
的内部时,上述代码才起作用。如果不想这样做,请以不同的方式初始化保存表单的变量,例如
var$form=jQuery(“#data”)

您不必提交表单。您可以提交一个序列化的数据结构,例如,您的
数据
数组。序列化(数据)。提交()???类型?方法?操作?语法pleeeazzz?我不知道字符串或JS对象实际上有一个提交()方法?@adeneo as AFIK他们没有,但这正是我希望找到的。@MarcB你的建议似乎基本上是用URL编码的字符串(序列化数组)附加paypal URL,如果GET是目标上可接受的方法,这会起作用,但我不相信paypal是这样的?