我使用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'];
?>
如何管理此问题?
答案 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"]);