如何将.xml从jQuery传递给PHP?

时间:2016-12-06 13:59:44

标签: php jquery ajax xml

我使用jQuery.ajax()在我的网站上提交表单。我得到一个.xml响应,我想将它发送到.php文件。我尝试过使用其他jQuery.ajax()功能:

<script type="text/javascript">
  $(document).ready(function() {
    $('#form').submit(function(e) {
      e.preventDefault();

      $.ajax({
        type: 'POST',
        url: 'myURL',
        data: $('#form').serialize(),
        success: function(xml)
        {
          $.ajax({
            type: 'POST',
            url: 'saveData.php',
            data: {
              xml: $(xml),
            },
            success: function(data) {
              $('#output').html(data);
            }
          });
        }
      });
    });
  })
</script>

但我遇到"Illegal invocation"错误。所以我在我的内部AJAX函数中添加了processData: false。现在我收到另一个错误:Undefined index: xml in...这是我的PHP代码:

<?php
  $xml = $_POST['xml'];
?>

如何管理此问题?

2 个答案:

答案 0 :(得分:0)

您可以尝试在第一个$.ajax调用中指定您将使用dataType接收XML:

$.ajax({
    type: 'POST',
    url: 'myURL',
    dataType: 'xml,
    data: $('#form').serialize(),
    success: function(xml) (...)

但我有一个问题。 为什么将ajax用于其他ajax调用? 如果两者都是同一台服务器,那么它似乎不合法。

答案 1 :(得分:0)

这可以帮助您进行调试。也许如果您为xml更改xml:$(xml): $(xml).val(),您可以得到您想要的内容。

取消线路警报($(xml).val()),您将看到$(xml)的内容是什么。

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

<script type="text/javascript">
  $(document).ready(function() 
  {

    $('#form').submit(function(e) 
    {
          e.preventDefault();

         // alert($(xml).val()); 


          $.ajax({
                type: 'POST',
                url: 'testpost.php',
                data: {
                  xml: $("#xml").val(),
                },
                success: function(data) {
                  $('#output').html(data);
                }
          });

    });

  })
</script>
</head>
<body>

<form id="form" method="POST">
<textarea name="xml" id="xml"><myxml>this is a test</myxml></textarea>
<input type="submit" value="Send">
</form>

<div id="output">Nothing executed till now</div>

</body>
</html>

testpost.php

<?php

var_dump($_POST["xml"]);