私は最初からやります。 私はショートコードでポストに挿入するか、サイドバーウィジェットとして追加できるという点で、二重の義務を負うwordpressプラグインを構築しています。それはローカルのPHPファイルへのjquery.postリクエストを作るためにいくつかのjsを出力します。ローカルのphpファイルは、Webサービスに対していくつかのデータを要求します。 (私は直接jquery.ajaxでWebサービスに照会するのではなく、このようにしなければなりませんでした。なぜなら、URLにはjsに置かれた場合にpublicとなるライセンスキーが含まれているからです)。phpスクリプトは2つのajaxリクエストを取得し、1つしか返しませんか?
とにかく、サイドバーウィジェットとショートコードによるプラグイン出力の両方を持つワードプレスブログのページを表示しているときに、リクエストの1つのみが動作します。私はそれがPHPスクリプトからの応答を返すことで動作することを意味します。ページがロードされると、手動で指示されたときに両方とも正常に動作します。
ウェブページビュー - > 2つの投稿要求をPHPスクリプトに送信 - >両方の要素を提出する必要がありますが、1つのみです。
私のPHPスクリプトは単なるです:かなり基本的な
<?php
if(isset($_POST["zip"])) {
// build a curl object, execute the request,
// and basically just echo what the curl request returns.
}
?>
。
がfunction widget_getActivities(zip){
jQuery("#widget_active_list").text("");
jQuery.post("http://localhost/wordpress/wp-content/ActiveAjax.php", { zip: zip},
function(text) {
jQuery(text).find("asset").each(function(j, aval){
var html = "";
html += "<a href='" + jQuery(aval).find("trackback").text() + "' target='new'> " + jQuery(aval).find("assetName").text() + "</a><b> at </b>";
jQuery("location", aval).each(function(i, val){
html += jQuery("locationName", val).text() + " <b> on </b>";
});
jQuery("date", aval).each(function(){
html += jQuery("startDate", aval).text();
<!--jQuery("#widget_active_list").append("<div id='ActivityEntry'>" + html + " </div>");-->
jQuery("#widget_active_list")
.append(jQuery("<div>")
.addClass("widget_ActivityEntry")
.html(html)
.bind("mouseenter", function(){
jQuery(this).animate({ fontSize: "20px", lineHeight: "1.2em" }, 50);
})
.bind("mouseleave", function(){
jQuery(this).animate({ fontSize: "10px", lineHeight: "1.2em" }, 50);
})
);
});
});
});
}
今先頭に付加されていない「widget_」で先頭に追加されたすべてのものを除いて、これと同じ別の関数があると想像:
は、ここでいくつかは、一部の人は見てみたかったJSです。私は両方の要求が行われている私のApacheのログに見ることができます
jQuery(document).ready(function(){
w_zip = jQuery("#widget_zip").val();
widget_getActivities(w_zip);
jQuery("#widget_updateZipLink").click(function() { //start function when any update link is clicked
widget_c_zip = jQuery("#widget_zip").val();
if (undefined == widget_c_zip || widget_c_zip == "" || widget_c_zip.length != 5)
jQuery("#widget_zipError").text("Bad zip code");
else
widget_getActivities(widget_c_zip);
});
})
:これらの2つの機能は、経由して個別に呼び出されます。 私はそれが何らかの競合状態であると推測していますが、それは意味をなさないものです。 私はこれ、すべてのアイデアに新しいですか?
EDIT:私は最適以下のソリューションを考え出しました。プラグインがページでも使用されている場合、私のウィジェットが検出するようにします。そうであれば、リクエストを実行する前に3秒待っています。しかし、私は問題がPHPスクリプトにあると信じているので、複数のクライアントが同時に私のPHPスクリプトへのリクエストの1つをトリガーするページリクエストを実行した場合、同じことが起こると感じています。
詳細情報やコードなしでは難しいです。 FirebugのNetパネルをFirefoxで使用して、ブラウザが送受信するトラフィック(要求/応答ヘッダーを含む)を確認できます.Ajaxのデバッグには非常に便利です。 – MSpreij
私はfirebugを使用しましたが、私のPHPスクリプトは200 OKを返していますが、その1つに内容の長さがありません...私はそれがどういう意味か分かりません。そして、驚くべきことに、彼らは両方とも有効な応答を返すので、jquery.postが何とか途切れているように見えます。 –