gpt4 book ai didi

android - Ajax 成功功能不适用于 android webview

转载 作者:行者123 更新时间:2023-12-05 07:02:43 25 4
gpt4 key购买 nike

我使用 asp.net 做了一个 web 项目,并在 android web View 中加载网站。我在网站中使用了 Ajax 并成功重定向到 URL。它在网络浏览器和移动浏览器上运行良好。但是在 android web View 中,ajax 不起作用并且它没有被重定向。我做了很多测试,但找不到问题所在。我添加了 return false 它有助于重定向 URL,但这不是正确的解决方案。 Ajax 成功功能不起作用。控制台中没有错误。这是我的代码:-

package com.project.projectname;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class Home extends AppCompatActivity {

private WebView webview;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);

webview = (WebView) findViewById(R.id.webView);
webview.setWebViewClient(new WebViewClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("tel:") || url.startsWith("https://www.facebook.com/sharer") || url.startsWith("http://twitter.com/share") || url.startsWith("https://wa.me/") || url.startsWith("https://plus.google.com/share")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
view.reload();
return true;
}
view.loadUrl(url);
return true;
//return false; This is redirect but ajax success function is not working
}
});

webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);

webview.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
// webview.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
webview.getSettings().setAppCacheEnabled(true);
webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webview.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setSavePassword(true);
webview.getSettings().setSaveFormData(true);
webview.getSettings().setEnableSmoothTransition(true);

webview.setOverScrollMode(WebView.OVER_SCROLL_NEVER);
webview.loadUrl("your website URL");

}
@Override
public void onBackPressed() {
if (webview.isFocused() && webview.canGoBack()) {
webview.goBack();
} else {
super.onBackPressed();
finish();
}
}
}

网站中的Ajax代码

$.ajax({
url: '/tapaking/Checkout/Details',
type: "POST",
data: JSON.stringify({
cart: json2,
note: note,
schdate: schdate,
schtime: schtime,
payment: payment
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(response) {
if (response.success) {
$('.sc-cart-clear').click();
window.location.href = "https://yourwebsite.com/User/UserProfile";
} else {

}
},
error: function() {
//alert("An error has occured!!!");
}
});

最佳答案

如果您要重定向到不同的地方,您可能不需要以编程方式单击某些按钮。由于移动浏览器/webview 中的代码导致的点击事件被认为是不安全的并被忽略。

此外,对于移动 webview,我们使用 document.location 代替 window.location.href。我认为你的代码中的这个小改动会有所帮助:

$.ajax({
url: '/tapaking/Checkout/Details',
type: "POST",
data: JSON.stringify({
cart: json2,
note: note,
schdate: schdate,
schtime: schtime,
payment: payment
}),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(response) {
if (response.success) {
// Probably we don't need to click something here.
// If required, we can clear with direct invocation of clear action.
// $('.sc-cart-clear').click();
document.location = "https://yourwebsite.com/User/UserProfile";
} else {

}
},
error: function() {
//alert("An error has occured!!!");
}
});

如果 document.location 不起作用,也可以尝试 document.location.replace(url)

关于android - Ajax 成功功能不适用于 android webview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63459357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com