0

我的 AJAX 请求 ping 服务器和 URL 但返回错误,因为它不喜欢 '<' 作为 php 脚本的打开标记。

AJAX 脚本。

 $.ajax({
url: "data.php",
type: "POST",
data: JSON.stringify({"data":transaction}),
dataType: "json",
success: function(data, textStatus, jqXHR){
    alert("success");
    currentProcesses -= 1;
    $("<span>").html("Ajax Call Complete.  Releasing lock for process").appendTo($(body));
},
error: function(jqXHR, textStatus, errorThrown){
    alert("error with ajax call "+textStatus+" "+errorThrown);
}
 });

脚本

 <?php
   $win = $_POST['data'];
 ?>

我是否为 AJAX 调用使用了错误的标志设置?

4

3 回答 3

3

您的 POST 请求的正文被编码为 application/json 而不是 application/x-www-form-urlencoded。

您没有做任何事情来让请求说数据是用 JSON 编码的,并且您没有在 PHP 中做任何事情来尝试解析 JSON。

结果,PHP 无法填充$_POST,因为数据格式错误。

解决方案是:不要发送 JSON。只需给 data 属性一个对象作为它的值,jQuery 就会为你将它序列化为 application/x-www-form-urlencoded 数据。

data:  { "data": transaction },

(假设这transaction不是复杂的数据类型(如数组或对象)。

此外,body变量是undefined。您应该使用字符串(使其成为选择器:)"body"或直接传递正文元素:document.body

于 2012-09-26T15:18:28.703 回答
0

它是否因收到的内容而窒息?试试这个……在你的 span 标签上放一个 id 属性,然后引用它。

在页面中:

<span id="someName">...</span>

在您的 ajax 调用中:

$("#someName").html(...
于 2012-09-26T15:19:01.797 回答
0

尝试使用classidspan来制作更独特的

<span id="output"></span>

试试这个。

$("#output").html("Ajax Call Complete.  Releasing lock for process").appendTo($(body));
}
于 2012-09-26T15:21:25.680 回答