Android からロードされる JS コードを含む HTML ページがありますWebView
。この JavaScript は、jQuery-post-functionを使用して -site をデータとともに呼び出し、-、- (および-) パラメーターHandleAndroidJSON.aspx
を含むコールバック関数を返します。data
status
jqXhr
function syncWithServer() {
var dataToSend = Android.getDataToSend();
$.post("HandleAndroidJSON.aspx", { data: dataToSend }, callbackDataFromServer);
}
function callbackDataFromServer(data, status) {
Android.setDataFromServer(data, status);
}
「Android」変数は、JavaScriptInterface
JS から Android メソッドを呼び出すことを可能にする Android で作成された変数です。
私のHandleAndroidJSON.aspx.cs
-file では、Android から受け取ったデータに応じて応答を書き込みます。
public partial class HandleAndroidJSON : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "text/plain";
// Read request parameter and deserialize JSON data.
string jsonDataFromClient = Request.Params["data"];
// ... Do stuff with the data ...
if (error != null)
{
//This goes into the data-parameter of the callbackFunction
Response.Write(error);
//Response.Status = "403 Error"; //This seems to only be HTTP-status responses,
//not the one used as parameter in the callback-function
}
else
{
//This does too
Response.Write(jsonDataToSend);
}
Response.End();
}
}
Response.Write()
-method はコールバック関数の-parameterで意図したとおりに戻りますが、 -parameterdata
を設定できないようです。常に同じ文字列「success」を返し、 -propertyを設定しても変化しません。status
Response.Status
問題は簡単です。 aspx.cs コードから -function (jQuery-post-function から呼び出される)のstatus
-parameterを設定するにはどうすればよいですか?callbackDataFromServer
編集: HTTP のステータスコードについて話しているのではありません。StatusDescription
- プロパティの- 、StatusCode
- 、およびStatus
- プロパティを設定しても、コールバック関数の - パラメータResponse
は変更されません。status
EDIT2:とにかくAndroidでデータを再度検証する必要があるため、JavaScriptコードでステータスパラメーターを処理しても問題が解決するとは思いません(エラー処理を回避するためにJavaScriptインジェクションが可能になるため)。callbackDataFromServer
現在のコードが示すように、関数内の status-parameter を介して Android メソッドに渡したいと思います。
EDIT3status
: aspx-code から -parameterを設定できるかどうかについての直接的な答えが見つからないように見えますが、 data
-parameter 以外で変更できるのは、jqXhr.status
設定できるプロパティだけのようです。 Response.StatusCode
aspx サイトのプロパティになります。
文字列を保持するプロパティもありjqXhr.statusText
ますが、statuscode に基づいたデフォルトのテキストのようであり、Response.StatusDescription
(statusCode を 200 に設定し、statusDescription を「success」に設定すると、「OK」として返されます。これは、 statusCode 200)。
これは私が読んでいたトピックです: Get the jqXhr.responseText on a jQuery getJSON request using JSONP
EDIT4 : をStatusCode
値に設定すると、何か問題が発生したことを意味し、メソッドResponse.Write()
が呼び出されてもデータが送信されず、達成しようとしている目的が無効になることがわかりました。
適切な質問は、次のようになります:データの代わりに、何か問題が発生した場合に (ASP.NET から jQuery を介して) エラー テキストを適切に渡すにはどうすればよいでしょうか? また、転送しているデータがエラーまたは JSONData であることを確認するにはどうすればよいでしょうか? 簡単な方法は、データが「{」または「[」で始まるかどうかを確認することだと思いますが、ちょっとしたハックのように感じます。