我的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到达(每个服务器日志)
答案 0 :(得分:0)
它是jsonp:如果您在jquery的.ajax函数中同时指定POST和jsonp,那么当转到同一个域时,它将被发布,而当跨域时,它将被更改为GET。
此问题与Android或Webview无关。