【问题标题】:json submit send a formjson 提交 发送表单
【发布时间】:2011-07-22 20:03:17
【问题描述】:

下面可以通过json请求发送一个表单,其中包含一个文件和一个文本框。我在服务器端使用django

<script>
var uploadform=$("#upload_form").val();
function send_data(paramarr,url) {
    $.post(url, paramarr,
    function callbackHandler(ret) {

    },
    "json"
    );
}
</script>

<form id="upload_form">
    <input type="text" name="field_name" >Name:
    <input type="file" name="field_name" >Upload:
</form> 

【问题讨论】:

  • var uploadform=$("upload_form").val();是不正确的。首先你必须使用 var uploadform=$("#upload_form").val();并且无法理解为什么你写了 $("#upload_form").val()。它会给你带来什么?

标签: jquery django json django-views getjson


【解决方案1】:

添加到 jm_toball 关于无法通过 post() 或 ajax() 上传文件的注释中,您可以尝试使用 jQuery 表单插件。我没有使用该插件进行文件上传,但他们的常见问题解答说他们的插件支持它:

http://jquery.malsup.com/form/#faq

【讨论】:

    【解决方案2】:

    您可以通过从服务器获取表单标记来动态创建表单。但是,很少有问题

    1. 如果获取的数据包含 JavaScript,则不会对其进行评估(即浏览器会忽略它。您必须手动对其进行评估)
    2. 当您提交加载的表单时,它会提交整个页面(您必须使用 Ajax 仅提交该表单,并保留页面的其余部分。)
    3. 如果表单包含文件标签,它将不起作用(您需要通过创建隐藏框架,将表单项加载到其中,提交并删除隐藏的表单来解决这个问题)

    【讨论】:

      【解决方案3】:

      你看过 jquery 的serialize() 函数吗?这允许您获取一个表单,将其序列化为一个字符串,然后将其作为参数传递。

      http://api.jquery.com/serialize/

      var str = $("#upload_form").serialize();
      $.post("test.php", str, function (ret){ 
      
      },"json");
      

      编辑:

      我承认我没有注意到这是一个文件上传。文件上传不能以这种方式完成。查看Uploadify

      【讨论】:

        【解决方案4】:

        您将无法通过 post() 或 ajax() 进行文件上传。您将不得不使用 iframe 或使用基本上会自动为您执行此操作的帮助程序库。在jQuery plugin site 中搜索大量替代方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-06
          • 2011-04-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多