Webview的Android Studio Javascript POST已更改为GET

时间:2019-04-26 08:00:40

标签: android post webview

我的Android Studio应用完全是一个Webview。 Webview有一些javascript(从asset文件夹加载),除了ajax POSTing之外,其他所有javascript都可以正常工作。我所有的ajax POST请求都以GET请求的形式到达远程Web服务器。

当我从笔记本电脑上运行相同的代码(它与Webview html和javascript符号链接,所以实际上是相同的)时,这些POST将作为POST到达。 Web服务器以及Android Studio和仿真器都在笔记本电脑上。

研究:我将应用程序简化为一个简单的应用程序,该应用程序在单击html元素后便会发布,但仍以GET的形式到达网络服务器。

也搜索了Internet,没有任何一种情况适合这种情况,所以我希望自己做的事情很愚蠢。

Android Studio 3.4,JRE 1.8.0。

这是我的网页视图:

public class MainActivity extends AppCompatActivity {
    String TAG = "MainActivity";

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

        myWebView = findViewById(R.id.myWebView);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        myWebView.loadUrl("file:///android_asset/app.html"); //app.html loads some javascript files
    }

这是网络视图中的javascript:

$(document).on("click", "#myelement", (function(e) {
    e.preventDefault();
    e.stopImmediatePropagation();
    $.ajax({
        type: 'POST',
        url: 'http://192.168.1.7/mywebserver/processdata.php',
        data: {'mydataFromForm': 'big bob'},
        dataType: 'jsonp',
        success: function (reply) {
            console.log('ajax success');//I see this, but that's just because processdata.php returns successfully, not because it received a POST
        }
    });
});

预期:javascript ajax POST作为POST到达网络服务器

实际:POST作为GET到达(每个服务器日志)

1 个答案:

答案 0 :(得分:0)

它是jsonp:如果您在jquery的.ajax函数中同时指定POST和jsonp,那么当转到同一个域时,它将被发布,而当跨域时,它将被更改为GET。

此问题与Android或Webview无关。