Ajax成功函数在android webview上不起作用



我使用asp.net做了一个web项目,并在android web视图中加载网站。我在网站中使用了Ajax,并重定向到URL以获得成功。它在网络浏览器和移动浏览器上运行良好。但在android网络视图中,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中的代码导致的点击事件被认为是不安全的,并被忽略。

此外,在移动Web视图的情况下,我们使用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)

最新更新