0

サーバーと URL を ping する私の AJAX 要求は、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スクリプト

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

AJAX 呼び出しに間違ったフラグ設定を使用していませんか?

4

3 に答える 3

3

POST リクエストの本文は、application/x-www-form-urlencoded ではなく、application/json としてエンコードされます。

データが JSON でエンコードされていることをリクエストに伝えるために何もしていません。JSON を解析しようとするために PHP で何もしていません。

その結果、$_POSTデータの形式が間違っているため、PHP はデータの取り込みに失敗します。

解決策は、JSON を送信しないことです。data プロパティに値としてオブジェクトを与えるだけで、jQuery がそれを application/x-www-form-urlencoded データにシリアル化します。

data:  { "data": transaction },

transaction(複雑なデータ型 (配列やオブジェクトなど)ではないことを前提としています)。

さらに、body変数はundefined. 文字列を使用するか (セレクターにする場合: "body")、または本体要素を直接渡す必要があります: document.body

于 2012-09-26T15:18:28.703 に答える
0

classidなどspanを使用して、よりユニークなものにしてみてください

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

そしてこれを試してください。

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

受け取っているものを窒息させていますか?これを試してみてください... span タグに id 属性を付けて、それを参照してください。

ページ内:

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

あなたのajax呼び出しで:

$("#someName").html(...
于 2012-09-26T15:19:01.797 に答える