2010-11-26 20 views
1

このコードはIE、FFなどで動作しますが、Safariでは動作しません。私はこれを理解していない。サファリjQueryとhref onClick?

私は私のウェブサイト上のリンクを持っている:

<a href="/show/231" onClick="web('231')">Show</a> 

今.jsファイル:

function web(id) { 
    $("#showIMG").load("/web", { 
     id: id 
    }, function() {}); 
} 

"/ウェブ" はPHPファイル(web.php)です。 web.phpではデータベースに値を保存する唯一のPHPコードです。

Safari、リダイレクト(/ show/231)が動作します。しかし、その値をデータベースに保存しない。 「ロード」は機能しません。

私はここで、このようにそれをテストした:

function web(id) { 
    $("#showIMG").load("/web", { 
     id: id 
    }, function() {}); 
    alert('clicked'); 
} 

警報作品。しかし、負荷ではない?

私はこの

<a href="#" onClick="web('231')">Show</a> 

「負荷」作品ではなく、/ショー/ 231へのリダイレクトへのリンクを変更します。

+0

誰かが正解を出した場合は、投票の下にあるチェックマークをクリックして選択してください。また、登録について考えることもできます。あなたの3つのアカウントをまとめました。 – Will

答えて

1

Safariが次のページへのナビゲートを開始すると、AJAXリクエストが停止します。

これを避けるには、(ハンドラにreturn false;を追加して)クリックを防止し、AJAX補完ハンドラでlocation.hrefを設定して明示的にナビゲートする必要があります。

0

おそらくページの変更がキャンセルされると、画像の画像が表示されなくなります。

location.href = "" instedを使用して、Webメソッド呼び出しでリダイレクトを行うことができます。

0

.load関数は非同期であるため、ブラウザが "/ show/231"にナビゲートする前にAJAX要求が実行される時間がない可能性があります。

あなたの例を考えると、私は次のパラメータをアヤックスと使用する.LOADを変更しようとするだろう:

$.ajax({ 
    async: false, 
    url: '/web', 
    data: 'id=' + id, 
    success: function(){} 
}); 

「非同期:偽」パラメータ/値ではなく、非同期のAJAX要求の同期を行い...あなたの問題を解決するはずです。