XMLHttpRequest不会引发错误,但是不会调用onload

时间:2019-07-28 21:34:45

标签: javascript java android-studio xmlhttprequest android-webview

我正在制作一个Android应用程序,以便可以通过手机在服务器上编辑值,但是当我尝试发送获取请求以获取初始值时,却没有任何响应。

我使用android网络视图能够使用javascript,因为我不知道java

它在android外(在快速服务器上)运行时可以工作,所以我怀疑它与android网络视图有关

MainActivity.java

public class MainActivity extends AppCompatActivity {

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

        WebViewWithCSS = (WebView)findViewById(R.id.webView);

        WebSettings webSetting = WebViewWithCSS.getSettings();
        webSetting.setJavaScriptEnabled(true);

        WebViewWithCSS.setWebViewClient(new WebViewClient());
        WebViewWithCSS.loadUrl("file:///android_asset/www/index.html");
    }

    private class WebViewClient extends android.webkit.WebViewClient
    {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
            return super.shouldOverrideUrlLoading(view, url);
        }
    }
}

javascript文件

  var getJSON = function(url, callback) {
      var xhr = new XMLHttpRequest();
      xhr.open('GET', url, true);
      xhr.responseType = 'json';
      xhr.onload = function() {
        var status = xhr.status;
        if (status === 200) {
          callback(null, xhr.response);
        } else {
          callback(status, xhr.response);
        }
      };
      xhr.send()
  };

  getJSON('http://totalytherealdeal.url/get', function(err, data) {
    console.log(data)
    if (err !== null) {
      console.log(err)
    } else {
      console.log(data)
    }
  });

正如我所说,它在调试器中不会输出任何意外的代码。 尝试xhr.send()时似乎出了点问题,因为此后它在xhr.onload内不运行任何操作或记录数据

英语不是我的母语

1 个答案:

答案 0 :(得分:0)

确保您在清单中拥有权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

还请注意,为了保护用户,Android不会处理对没有有效SSL证书的任何服务器的HTTP请求。