2010-12-18 29 views
1

JQuery ajaxに問題があります。私はaspxファイルを呼び出しています。しかし、私は文字が&#の後にお互いにある場合、それは動作しませんが、ここでは奇妙な部分です。それは他のすべて(私は思う)と動作します。しかし、お互いに2文字だけ。彼らはソロで働くので、ちょうど#のように、あるいはちょうど&のように。AJAXコールは&#で動作しません

これは私が使用していたコードです:

function CreateNewItem() { 
$.ajax({ 
    url: 'List.aspx', 
    data: ({ Callback: "CreateNewItem", ListID: currentList, ItemSubject: $('#editContentTitle').val(), ItemText: $('#editContentBox').val(), Author: author }), 
    type: "POST", 
    dataType: "json", 
    success: function (newItem) { 
     if (newItem.status == "success") { 
      $('#ItemBoxDiv').append(GetItemHTML(newItem.itemID, newItem.itemSubject, newItem.itemText, author, newItem.itemPosted, newItem.itemCompleted)); 
      RestartAccordion(); 
     } 
     else 
      ErrorOccured('The message could not be created due to the following reason\\n' + newItem.errorMessage); 
    }, 
    failed: function (data) { 
     ErrorOccured('The item could not be created, an unknown error occured and the ajax request/response was incorrect'); 
    } 
}); 
} 

私は通常のテキストを使用する場合ので、私は成功に設定変数の状態に戻ってJSONオブジェクトを取得します。私が作者などを入力するのをスキップすると、変数statusがfailedに設定されたJSONオブジェクトが返されます。しかし、私が&を試してみると、nullが返ってきて、aspxのページもヒットしません。私はaspxページで広範なテストを行ってきましたが、その1つが動作し、メソッドは2文字が投稿されたときに呼び出されません。 ?

Forum.aspxグラム=ポスト&トン= 194 &#post1536

任意のアイデア:私はフォーラムのアドレスを保存しようとしたときに

私はこの問題を発見しましたか?

+0

が、それもそのポイントになっていないので、JSONメッセージを受信して​​、無意味戻り値 – Tahbaza

+0

を生成list.aspx内のコードを提供するのに役立ちます。それはいくつかの他の人からnullを返し、私は考えられるエラーのためにList.aspx.csファイル全体を調べています。 – Patrick

答えて

1

ECODEすべてのデータサーバに渡す前に。

data: ({ 
    Callback: "CreateNewItem", 
    ListID: currentList, 
    ItemSubject: encodeURIComponent($('#editContentTitle').val()), 
    ItemText: encodeURIComponent($('#editContentBox').val()), 
    Author: author 
}), 

希望は、これは

1

URIのコンテキスト内の#post1536が内部ページアンカーであるため、nullが返されます。

#post1536がIDインジケータの場合は、& postId = 1536に変更してください。

データを送信する方法に慣れていません。 jQuery.ajax()のAPIによると、データを送信するこの方法では、同期(ユーザーブロック)要求が必要です。私はいつもストリングやハッシュでparamsを送ってきました。また、コールバック関数は、ajaxを実行する関数と同じ関数でした。 「成功」はあなたのコールバックなので、これを行う必要はありません。

var params = "ListId=" + currentList + "&ItemSubject=" + $('#editContentTitle').val() + "&ItemText=" + $('#editContentBox').val() + "&Author=" + author; 
$.ajax({ 
    url: 'List.aspx', 
    data: params, 
    type: "POST", 
    dataType: "json", 
    success: function (newItem) { 
     if (newItem.status == "success") { 
      $('#ItemBoxDiv').append(GetItemHTML(newItem.itemID, newItem.itemSubject, newItem.itemText, author, newItem.itemPosted, newItem.itemCompleted)); 
      RestartAccordion(); 
     } 
     else 
      ErrorOccured('The message could not be created due to the following reason\\n' + newItem.errorMessage); 
    }, 
    failed: function (data) { 
     ErrorOccured('The item could not be created, an unknown error occured and the ajax request/response was incorrect'); 
    } 
}); 
+0

私が実行しているajaxスクリプトはテキストを取り、それをデータベースに格納します。テキストボックスにはテキストを入力して保存しただけです。フォーラム投稿のリンクだけでなく、何でもかまいません。どうすれば問題を回避できますか?私はそれがすべてを救うことができるようにしたい。 – Patrick

+0

私はいくつかの助けになるかもしれない明確化を提供しました。 –

0

ハッシュタグ付きのサーバー要求を送信する理由はなく、クライアントに関連性​​があります。私は要求の前にそれを取り除くことを提案したいと思います。

なぜそれが起こっているのかの理論。リクエストしているURLが現在のURLと同じ場合、ブラウザは現在のページ内のブックマークにアクセスしようとしていると仮定してリクエストを実行しようとしません。しかし、ちょうど推測する。

クエリ文字列への変更ハッシュタグの例。

var url = "Forum.aspx?g=posts&t=194&#post1536".replace("#post", "post="); // returns Forum.aspx?g=posts&t=194&post=1536 

リッチ

+0

同じページです。どのように私はそれを取り除くことができます。 hal10001が作ったコメントを見てください。 – Patrick

+0

あなたが作業しているURLが 'Forum.aspx?g = posts&t = 194&#post1536'で、投稿IDをサーバに送信したい場合は、replaceメソッドを使用します。私は上記の例を含んでいます。 – kim3er

+0

問題は、リンクが入っているテキストボックス$( '#editContentBox')。val()です。将来私が投稿するリンク/テキストはわかりません。私はユニバーサルコンバータが必要です。次回は、data.aspxのようなものかもしれない?hello&#。 JQueryが単純なテキスト文字列を送ることさえできないなら、それは何のために良いですか?私は、URL "List.aspx"に干渉していないことを意味します。それは単純なテキストです。 – Patrick

関連する問題